现在开发的一个项目,分为两个工程,以下称为工程A和工程B。工程A的log4j.properties配置如下# This is the configuring for logging displayed in the Application Server
log4j.rootLogger=DEBUG,CONSOLE,ROLLING_FILElog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss}] [%-5p] %m%nlog4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.threshold=DEBUG
log4j.appender.ROLLING_FILE.file=C:/web_log/weblog.log
log4j.appender.ROLLING_FILE.append=true
log4j.appender.ROLLING_FILE.maxFileSize=1024KB
log4j.appender.ROLLING_FILE.maxBackupIndex=100
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.conversionPattern=[%d{yyyy/MM/dd HH:mm:ss}] [%-5p] %m%nlog4j.logger.java.sql=DEBUG工程B的log4j.properties配置如下# This is the configuring for logging displayed in the Application Server
log4j.rootLogger=ERROR,CONSOLE,ROLLING_FILElog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss}] [%-5p] %m%nlog4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.threshold=DEBUG
log4j.appender.ROLLING_FILE.file=C:/web_log/weblog.log
log4j.appender.ROLLING_FILE.append=true
log4j.appender.ROLLING_FILE.maxFileSize=1024KB
log4j.appender.ROLLING_FILE.maxBackupIndex=100
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.conversionPattern=[%d{yyyy/MM/dd HH:mm:ss}] [%-5p] %m%nlog4j.logger.java.sql=DEBUG现在出现的问题就是,按照以上的配置,生成的日志应该在大小为1024KB的时候,由log4j控制生成新文件。
但是实际运用中的结果却是,到了1024KB时候没有自动生成新文件,而是在 C:/web_log/weblog.log 文件中继续写入,直到100MB才生成下一个新文件。
关于这个问题,实在是很为难,在网上查了些资料,也是无济于事,问问各位大侠,是否有好的方法能够解决这个问题(尽量使用log4j的功能来实现,在java端自己写判断文件大小并生成新文件的方法不采用)

解决方案 »

  1.   

    为什么两个工程要用一个文件做日志呢?这个本身就不合理。log4j对文件会加锁的,这样会不会在需要生成新文件的时候,由于另外一个工程的加锁,所以无法生成新的文件?
      

  2.   

    og4j.appender.ROLLING_FILE.maxBackupIndex=100 改成1 试试
      

  3.   


    log4j.rootLogger=error,a,b
    ### direct log messages to stdout ###
    log4j.appender.b=org.apache.log4j.ConsoleAppender
    log4j.appender.b.Target=System.out
    log4j.appender.b.layout=org.apache.log4j.PatternLayout
    log4j.appender.b.layout.ConversionPattern=%d{ABSOLUTE} %p %c{1}:%L - %m%n### direct messages to file hibernate.log ###
    log4j.appender.a=org.apache.log4j.RollingFileAppender
    log4j.appender.a.maxFileSize=10MB
    log4j.appender.a.maxBackupIndex=3
    log4j.appender.a.File=d:/routing.log
    log4j.appender.a.layout=org.apache.log4j.PatternLayout
    log4j.appender.a.layout.ConversionPattern=%d{ABSOLUTE} %p %c{1}:%L - %m%n
    log4j.logger.com.ibatis=debug
    log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
    log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
    log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug### set log levels - for more verbose logging change 'info' to 'debug' ###