buildframework/helium/sf/java/logging/src/com/nokia/helium/logger/ant/listener/RecorderEntry.java
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
child 645 b8d81fa19e7d
permissions -rw-r--r--
helium_11.0.0-e00f171ca185
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     1
/*
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     2
 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     3
 * All rights reserved.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     4
 * This component and the accompanying materials are made available
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     6
 * which accompanies this distribution, and is available
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     8
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
     9
 * Initial Contributors:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    10
 * Nokia Corporation - initial contribution.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    11
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    12
 * Contributors:
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    13
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    14
 * Description:  
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    15
 *
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    16
 */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    17
package com.nokia.helium.logger.ant.listener;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    18
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    19
import java.io.File;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    20
import java.io.FileOutputStream;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    21
import java.io.IOException;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    22
import java.io.PrintStream;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    23
import java.util.Vector;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    24
import java.util.regex.Matcher;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    25
import java.util.regex.Pattern;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    26
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    27
import org.apache.log4j.Logger;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    28
import org.apache.tools.ant.BuildEvent;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    29
import org.apache.tools.ant.BuildException;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    30
import org.apache.tools.ant.DefaultLogger;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    31
import org.apache.tools.ant.Project;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    32
import org.apache.tools.ant.util.StringUtils;
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    33
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    34
/**
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    35
 * This is a class that represents a recorder. This is the listener to the build process.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    36
 * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    37
 * @since Ant 1.4
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    38
 */
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    39
public class RecorderEntry implements BuildEventHandler, TargetEventHandler, TaskEventHandler,
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    40
    MessageEventHandler {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    41
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    42
    /** The name of the file associated with this recorder entry. */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    43
    private File filename;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    44
    /** The state of the recorder (recorder on or off). */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    45
    private boolean record = true;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    46
    /** The current verbosity level to record at. */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    47
    private int loglevel = Project.MSG_INFO;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    48
    /** The output PrintStream to record to. */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    49
    private PrintStream out;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    50
    /** The start time of the last know target. */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    51
    private long targetStartTime;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    52
    /** Strip task banners if true. */
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    53
    private boolean emacsMode;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    54
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    55
    private Pattern pattern;
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    56
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    57
    private Vector<String> logRegExps = new Vector<String>();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
    private Logger log = Logger.getLogger(getClass());
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    59
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    61
     * @param name The name of this recorder (used as the filename).
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    63
    public RecorderEntry(File name) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    64
        targetStartTime = System.currentTimeMillis();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    65
        filename = name;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    66
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    67
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    68
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    69
     * @return the name of the file the output is sent to.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    70
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    71
    public File getFilename() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    72
        return filename;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    73
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    74
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    75
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    76
     * Turns off or on this recorder.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    77
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    78
     * @param state true for on, false for off, null for no change.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    79
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    80
    public void setRecordState(boolean state) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    81
        flush();
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    82
        record = state;
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    83
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    84
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    85
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    86
     * Get the current state of the recorder
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    87
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    88
     * @param state
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    89
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    90
    public boolean getRecordState() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    91
        return record;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    92
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    93
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    94
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    95
     * To set the regexp to filter the logging.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    96
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    97
     * @param regexp
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    98
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    99
    public void addRegexp(String regexp) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   100
        logRegExps.add(regexp);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   101
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   102
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   103
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   104
     * To clear all regexp set.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   105
     */
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   106
    public void resetRegExp() {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   107
        logRegExps.clear();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   108
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   109
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   110
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   111
     * @see org.apache.tools.ant.BuildListener#buildStarted(BuildEvent)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   112
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   113
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   114
    public void handleBuildStarted(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   115
        log("> BUILD STARTED", Project.MSG_DEBUG);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   116
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   117
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   118
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   119
     * @see org.apache.tools.ant.BuildListener#buildFinished(BuildEvent)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   120
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   121
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   122
    public void handleBuildFinished(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   123
        log.debug("< BUILD FINISHED");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   124
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   125
        if (record && out != null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   126
            Throwable error = event.getException();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   127
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   128
            if (error == null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   129
                out.println(StringUtils.LINE_SEP + "BUILD SUCCESSFUL");
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   130
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   131
            else {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   132
                out.println(StringUtils.LINE_SEP + "BUILD FAILED" + StringUtils.LINE_SEP);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   133
                error.printStackTrace(out);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   134
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   135
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   136
        cleanup();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   137
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   138
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   139
    /**
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   140
     * Cleans up any resources held by this recorder entry at the end of a subbuild if it has been
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   141
     * created for the subbuild's project instance.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   142
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   143
     * @param event the buildFinished event
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   144
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   145
     * @since Ant 1.6.2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   146
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   147
    public void handleSubBuildFinished(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   148
        log("< SUBBUILD FINISHED", Project.MSG_DEBUG);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   149
        // let's keep the logging ongoing, even if sub-build finishes.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   150
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   151
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   152
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   153
     * Empty implementation to satisfy the BuildListener interface.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   154
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   155
     * @param event the buildStarted event
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   156
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   157
     * @since Ant 1.6.2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   158
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   159
    public void handleSubBuildStarted(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   160
        log("< SUBBUILD STARTED", Project.MSG_DEBUG);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   161
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   162
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   163
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   164
     * {@inheritDoc}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   165
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   166
    public void handleTargetStarted(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   167
        log(">> TARGET STARTED -- " + event.getTarget(), Project.MSG_DEBUG);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   168
        log(StringUtils.LINE_SEP + event.getTarget().getName() + ":", Project.MSG_INFO);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   169
        targetStartTime = System.currentTimeMillis();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   170
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   171
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   172
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   173
     * {@inheritDoc}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   174
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   175
    public void handleTargetFinished(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   176
        log("<< TARGET FINISHED -- " + event.getTarget(), Project.MSG_DEBUG);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   177
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   178
        String time = formatTime(System.currentTimeMillis() - targetStartTime);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   179
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   180
        log(event.getTarget() + ":  duration " + time, Project.MSG_VERBOSE);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   181
        flush();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   182
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   183
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   184
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   185
     * @see org.apache.tools.ant.BuildListener#taskStarted(BuildEvent)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   186
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   187
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   188
    public void handleTaskStarted(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   189
        log(">>> TASK STARTED -- " + event.getTask(), Project.MSG_DEBUG);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   190
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   191
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   192
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   193
     * @see org.apache.tools.ant.BuildListener#taskFinished(BuildEvent)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   194
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   195
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   196
    public void handleTaskFinished(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   197
        log("<<< TASK FINISHED -- " + event.getTask(), Project.MSG_DEBUG);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   198
        flush();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   199
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   200
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   201
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   202
     * @see org.apache.tools.ant.BuildListener#messageLogged(BuildEvent)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   203
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   204
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   205
    public void handleMessageLogged(BuildEvent event) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   206
        log("--- MESSAGE LOGGED", Project.MSG_DEBUG);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   207
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   208
        StringBuffer buf = new StringBuffer();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   209
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   210
        if (event.getTask() != null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   211
            String name = event.getTask().getTaskName();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   212
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   213
            if (!emacsMode) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   214
                String label = "[" + name + "] ";
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   215
                int size = DefaultLogger.LEFT_COLUMN_SIZE - label.length();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   216
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   217
                for (int i = 0; i < size; i++) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   218
                    buf.append(" ");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   219
                }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   220
                buf.append(label);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   221
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   222
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   223
        String messgeToUpdate = filterMessage(event.getMessage());
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   224
        buf.append(messgeToUpdate);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   225
        log(buf.toString(), event.getPriority());
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   226
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   227
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   228
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   229
     * To replace regExp matching with ****.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   230
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   231
     * @param message
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   232
     * @return
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   233
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   234
    private String filterMessage(String message) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   235
        for (String regExp : logRegExps) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   236
            pattern = Pattern.compile(regExp);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   237
            if (pattern != null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   238
                Matcher match = pattern.matcher(message);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   239
                message = match.replaceAll("********");
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   240
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   241
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   242
        return message;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   243
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   244
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   245
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   246
     * The thing that actually sends the information to the output.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   247
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   248
     * @param mesg The message to log.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   249
     * @param level The verbosity level of the message.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   250
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   251
    private void log(String msg, int level) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   252
        if (record && (level <= loglevel) && out != null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   253
            out.println(msg);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   254
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   255
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   256
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   257
    private void flush() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   258
        if (record && out != null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   259
            out.flush();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   260
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   261
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   262
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   263
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   264
     * @see BuildLogger#setMessageOutputLevel(int)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   265
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   266
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   267
    public void setMessageOutputLevel(int level) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   268
        if (level >= Project.MSG_ERR && level <= Project.MSG_DEBUG) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   269
            loglevel = level;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   270
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   271
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   272
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   273
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   274
     * @see BuildLogger#setOutputPrintStream(PrintStream)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   275
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   276
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   277
    public void setOutputPrintStream(PrintStream output) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   278
        closeFile();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   279
        out = output;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   280
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   281
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   282
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   283
     * @see BuildLogger#setEmacsMode(boolean)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   284
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   285
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   286
    public void setEmacsMode(boolean emacsMode) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   287
        this.emacsMode = emacsMode;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   288
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   289
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   290
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   291
     * @see BuildLogger#setErrorPrintStream(PrintStream)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   292
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   293
    /** {@inheritDoc}. */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   294
    public void setErrorPrintStream(PrintStream err) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   295
        setOutputPrintStream(err);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   296
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   297
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   298
    private static String formatTime(long millis) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   299
        // CheckStyle:MagicNumber OFF
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   300
        long seconds = millis / 1000;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   301
        long minutes = seconds / 60;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   302
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   303
        if (minutes > 0) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   304
            return Long.toString(minutes) + " minute" + (minutes == 1 ? " " : "s ")
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   305
                + Long.toString(seconds % 60) + " second" + (seconds % 60 == 1 ? "" : "s");
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   306
        }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   307
        else {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   308
            return Long.toString(seconds) + " second" + (seconds % 60 == 1 ? "" : "s");
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   309
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   310
        // CheckStyle:MagicNumber ON
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   311
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   312
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   313
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   314
     * Registering ourselves to the StatusAndLogListener.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   315
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   316
    public void register() {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   317
        StatusAndLogListener listener = StatusAndLogListener.getStatusAndLogListener();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   318
        if (listener != null) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   319
            this.log.debug("register");
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   320
            synchronized (listener) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   321
                listener.register((BuildEventHandler) this);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   322
                listener.register((TargetEventHandler) this);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   323
                listener.register((TaskEventHandler) this);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   324
                listener.register((MessageEventHandler) this);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   325
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   326
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   327
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   328
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   329
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   330
     * Unregistering ourselves from the StatusAndLogListener.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   331
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   332
    public void unregister() {
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   333
        StatusAndLogListener listener = StatusAndLogListener.getStatusAndLogListener();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   334
        if (listener != null) {
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   335
            this.log.debug("unregister");
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents: 587
diff changeset
   336
            synchronized (listener) {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   337
                listener.remove((MessageEventHandler) this);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   338
                listener.remove((TaskEventHandler) this);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   339
                listener.remove((TargetEventHandler) this);
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   340
                listener.remove((BuildEventHandler) this);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   341
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   342
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   343
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   344
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   345
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   346
     * @since 1.6.2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   347
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   348
    public void cleanup() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   349
        closeFile();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   350
    }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   351
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   352
    /**
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   353
     * Closes the file associated with this recorder. Used by Recorder.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   354
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   355
     * @since 1.6.3
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   356
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   357
    public void closeFile() {
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   358
        this.log.debug("closeFile.");
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   359
        if (out != null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   360
            out.close();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   361
            out = null;
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   362
            unregister();
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   363
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   364
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   365
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   366
    /**
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   367
     * Initially opens the file associated with this recorder. Used by Recorder.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   368
     * 
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   369
     * @param append Indicates if output must be appended to the logfile or that the logfile should
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   370
     *        be overwritten.
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   371
     * @throws BuildException
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   372
     * @since 1.6.3
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   373
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   374
    public void openFile(boolean append) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   375
        openFileImpl(append);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   376
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   377
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   378
    /**
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   379
     * Re-opens the file associated with this recorder. Used by Recorder.
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   380
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   381
     * @throws BuildException
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   382
     * @since 1.6.3
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   383
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   384
    public void reopenFile() {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   385
        openFileImpl(true);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   386
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   387
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   388
    private void openFileImpl(boolean append) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   389
        if (out == null) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   390
            this.log.debug("openFileImpl: " + filename);
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   391
            try {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   392
                out = new PrintStream(new FileOutputStream(filename, append));
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   393
                register();
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   394
            }
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   395
            catch (IOException ioe) {
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   396
                throw new BuildException("Problems opening file using a " + "recorder entry: "
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   397
                    + ioe.getMessage(), ioe);
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   398
            }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   399
        }
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   400
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   401
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   402
    /**
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   403
     * To add user message into log file.
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   404
     * 
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   405
     * @param message
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   406
     */
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   407
    public void addLogMessage(String message) {
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   408
        out.println(StringUtils.LINE_SEP + message);
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   409
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   410
    }
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   411
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   412
}