DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23688>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23688

Provide a method to get the ant logging level for the log4j appender

           Summary: Provide a method to get the ant logging level for the
                    log4j appender
           Product: Ant
           Version: 1.5.1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: Optional Tasks
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


I am using the the code that follows to set up an appender to ant log file from
the log4j events.  The only problem is I cannot set the log4j logging level
according to the ant logging level because there is no method to get the ant
logging level.  In order to see the logging then I must set logging in log4j to
all and then let ant logging filter but this can really hurt performance if
there is alot of logging.

        // redirect log4j to ant logger
        Appender appender = Log4jToAnt.getAppenderForTask( this);
        Logger rootLogger = LogManager.getRootLogger();
        Level savedRootLoggerLevel = rootLogger.getLevel();
        if( log4jDebug ) {
            rootLogger.setLevel( Level.ALL); // turn on all logging and let ant 
filter
        } else {
            rootLogger.setLevel( Level.ERROR); // turn off logging for improved 
speed
        }
        // TODO: performance improvement: find out way to detect ant logging 
level and
set appropriately.
        // Note: Ant does not expose the logging value so we would need to 
modify ant
!!! arg
        BasicConfigurator.configure( appender);


    public static final int getAntMsgInt( Level level ) {
        if( level == Level.DEBUG ) {
            return Project.MSG_DEBUG;
        } else if( level == Level.INFO ) {
            return Project.MSG_VERBOSE;
        } else if( level == Level.WARN ) {
            return Project.MSG_WARN;
        } else if( level == Level.ERROR ) {
            return Project.MSG_ERR;
        } else if( level == Level.FATAL ) {
            return Project.MSG_ERR;
        } else {
            return Project.MSG_VERBOSE;
        }
    }

    public static final Appender getAppenderForTask( final Task task) {
        return new AppenderSkeleton() {
                Task _task = task;
                {
                    _task.log( "Started redirect of log4j to ant logger", 
Project.MSG_VERBOSE );
                }
                public void append(LoggingEvent event) {
                    _task.log( event.getLoggerName().substring(
event.getLoggerName().lastIndexOf( ".")+1) + " " + event.getRenderedMessage(),
getAntMsgInt( event.getLevel()));
                }
                public void close() {
                }
                public boolean requiresLayout() { 
                    return false; 
                }
            };
    }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to