解决方案 »

  1.   

    log4j只会最简单的配置,不太方便。
    可以试试Logback(Log4J的升级版,同一个人开发的),配置挺简单的,实现你的这个要求也很简单,修改一行配置就能实现。
      

  2.   

    log4j.rootLogger=INFO,SYS,stdout  去掉这里的SYS和后面SYS的配置
      

  3.   

    你在输出日志的代码那里用的是什么级别?你的FLOW定义为DEBUG级别,那么你企图输出的日志必须大于这个级别才能生效,such as logger.debug() 或者 logger.error()。
      

  4.   

    谢谢!我知道怎么配了。log4j.rootLogger=DEBUG,stdout
    log4j.logger.SYS=DEBUG,SYS
    log4j.logger.FLOW=DEBUG,FLOWlog4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Threshold = DEBUG
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=[%d][%p][%F:%L]%m%nlog4j.appender.SYS=org.apache.log4j.DailyRollingFileAppender
    #log4j.appender.SYS.Threshold = DEBUG
    log4j.appender.SYS.file=../log/sys.log
    log4j.appender.SYS.DatePattern='.'yyyy-MM-dd
    log4j.appender.SYS.layout=org.apache.log4j.PatternLayout 
    log4j.appender.SYS.layout.ConversionPattern=[%t][%d][%p][%F:%L]%m%nlog4j.appender.FLOW=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.FLOW.file=../log/flow.log
    log4j.appender.FLOW.DatePattern='.'yyyy-MM-dd
    log4j.appender.FLOW.layout=org.apache.log4j.PatternLayout 
    log4j.appender.FLOW.layout.ConversionPattern=%d|%m%n这样就可以了,Logger.getLogger(ClassNamexxx.class)这样的就只输出控制台,Logger.getLogger(”SYS“)这样的输出控制台又输出日志文件,Logger.getLogger(”FLOW“)也是只输出控制台又输出到flow文件。就是flow,sys共同继承stdout,所以两者的输出也会输出到stdout。如果不想继承父log也可以通过配置log4j.additivity.FLOW=false,这样FLOW日志只会输出到文件,不会输出到终端了。