How to disable log4j logging from Java code

前端 未结 8 1649
难免孤独
难免孤独 2021-02-07 13:58

I use a legacy library that writes logs using log4j. My default log4j.properties file directs the log to the console, but in some specific functions of my main program, I would

相关标签:
8条回答
  • 2021-02-07 14:28

    You can use

    Logger.getRootLogger().setLevel(Level.OFF); 
    

    to disable any logging in java code

    0 讨论(0)
  • 2021-02-07 14:29

    If you wanna achieve perfect silence (like for a quiet command line tool), you can always use the NullAppender.

    Logger.getRootLogger().removeAllAppenders();
    Logger.getRootLogger().addAppender(new NullAppender());
    
    0 讨论(0)
  • 2021-02-07 14:34

    You could try TO disable it changing your log4j.properties:

    log4j.rootLogger=off, stdout
    #log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile
    #log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn
    
    ...
    

    Ref: http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html#OFF

    0 讨论(0)
  • 2021-02-07 14:40

    So, you have 3 loggers defined, including the root:

    log4j.rootLogger=warn, stdout
    log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile
    log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn
    

    Unfortunately, to disable them programatically, you need to specify ALL OF THEM in the code:

    Logger.getLogger("ac.biu.nlp.nlp.engineml").setLevel(Level.OFF);
    Logger.getLogger("org.BIU.utils.logging.ExperimentLogger").setLevel(Level.OFF);
    Logger.getRootLogger().setLevel(Level.OFF);
    

    Here's how to reset it back to what's set in the config file.

    0 讨论(0)
  • 2021-02-07 14:46

    Add the following to your log file

    log4j.logger.com.class.with.package.BasicImplementation = off, logfiledata
    
    log4j.appender.logfiledata = ac.biu.nlp.nlp.log.BackupOlderFileAppender
    log4j.appender.logfiledata.append=false
    log4j.appender.logfiledata.layout = org.apache.log4j.PatternLayout
    log4j.appender.logfiledata.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n
    log4j.appender.logfiledata.File = logfiledata.log
    

    If the above will not stop if from logging, it will at least log all the data from BasicImplementation class to a separate file.

    0 讨论(0)
  • 2021-02-07 14:48

    Perhaps like that:

    Logger.getRootLogger().shutdown();

    0 讨论(0)
提交回复
热议问题