代码之家  ›  专栏  ›  技术社区  ›  GregT

log4j 1.2.17中具有属性的最大日志文件大小

  •  0
  • GregT  · 技术社区  · 7 年前

    两者都还没成功,但首先我想解决文件大小的问题。

    log4j.rootLogger=DEBUG, file
    
    log4j.appender.file=org.apache.log4j.rolling.RollingFileAppender
    log4j.appender.file.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
    log4j.appender.file.rollingPolicy.fileNamePattern=./log/logging.%d.log.zip
    log4j.appender.file.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy
    log4j.appender.file.TriggeringPolicy.maxFileSize=1000000
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    我们使用log4j 1.2.17,现在我添加了相同版本的log4j附加组件。

    当我测试日志记录时,它会创建任意的大文件。我尝试了MimuluMuleSeScript和Max FielSeSe,而不是Max FrimeSeas,“10MB”,而不是一个数字,但没有工作。

    我还尝试通过编程方式设置属性,尽管这会使事情变得很困难,因为我们有很多使用记录器的类。

    logger = Logger.getLogger(LogTest.class);
    //        RollingFileAppender app = (RollingFileAppender) logger.getAppender("file");
    //        app.setMaxFileSize("1000000");
    Enumeration allAppenders = logger.getAllAppenders();
    System.out.println(allAppenders);
    for (Enumeration<Object> iter = allAppenders; iter.hasMoreElements();) {
        Object elem = iter.nextElement();
        System.out.println(elem);
    }
    

    输出为空枚举:

    org.apache.log4j.helpers.NullEnumeration@1161fded
    

    我没有找到另一个对我的问题有用的帖子。有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   vijayakumarpsg587    7 年前

    @格雷格特 如您所知,log4j有三个主要的结构:appender、priority(logger)和pattern layout。默认情况下,当我们实例化log4j时设置根日志,例如 Logger log = Logger.getInstance(Somclass.class) ->它添加rootlogger的额外性(意味着rootlogger中设置的优先级和级别默认由该子记录器继承)。现在,您可以选择在lo4j配置中定义自己的优先级和级别(在xml或属性文件中)。

    log4j.threshold = INFO
    #Specify the appender and the priority
    log4j.rootLogger = DEBUG, Appender1, Appender2
    
    log4j.appender.Appender1 = org.apache.log4j.ConsoleAppender
    
    log4j.appender.Appender2 = org.apache.log4j.RollingFileAppender
    log4j.appender.Appender2.File = app/log1.log
    
    log4j.appender.Appender1.layout = org.apache.log4j.PatternLayout
    log4j.appender.Appender2.layout = org.apache.log4j.PatternLayout
    
    # Print the date in ISO 8601 format
    log4j.appender.Appender1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    log4j.appender.Appender2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    

    注意:在这里,如果您将阈值设置为INFO,并且即使优先级设置为DEBUG level,它也只输出符合“log”实例中INFO level的语句。

    注意我们也可以为不同的模块设置不同的日志

    log4j.rootLogger=DEBUG
    
    # AdminFileAppender - used to log messages in the admin.log file.
    log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender
    log4j.appender.AdminFileAppender.File=app/admin.log
    log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.AdminFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    
    # ReportFileAppender - used to log messages in the report.log file.
    log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender
    log4j.appender.ReportFileAppender.File=app/report.log
    log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.ReportFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    
    **log4j.logger.com.vaannila.admin=,AdminFileAppender 
    log4j.logger.com.vaannila.report=,ReportFileAppender** 
    

    管理日志 “文件和报告模块已写入” 报告.log

    希望这有帮助

    编辑:我担心基于时间/大小的触发策略工作得很好,而且只适用于xml配置,而不是属性文件配置。请检查一下。而且也不必包含apache-log4j-extras依赖项。1.2.17随附。下面是我使用的基于XML的配置

     <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            </Console>
    
            <RollingFile name="info" filepattern="apps/logs/${hostName}-info-%i.log"
                filename="apps/logs/${hostName}-info.log">
    
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
                <Policies>
    
                    <SizeBasedTriggeringPolicy size="20 MB" />
    
                </Policies>
    
                <DefaultRolloverStrategy max="1" min="1" />
    
            </RollingFile>
            <RollingFile name="debug" filepattern="apps/logs/${hostName}-debug-%i.log"
                filename="apps/logs/${hostName}-debug.log">
    
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
                <Policies>
    
                    <SizeBasedTriggeringPolicy size="20 MB" />
    
                </Policies>
    
                <DefaultRolloverStrategy max="1" min="1" />
    
            </RollingFile>
            <Routing name="RoutingAppender">
                <Routes pattern="${ctx:logFileName}">
                    <Route>
                        <RollingFile name="${ctx:logFileName}-logfile"
                            fileName="apps/logs/${hostName}-${ctx:logFileName}.log"
                            filePattern="apps/logs/${hostName}-${ctx:logFileName}-%i.log">
                            <PatternLayout>
                                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS}[%X{logTrackingId}] [%t] %c{1} - %msg%n
                                </pattern>
                            </PatternLayout>
                            <Policies>
                                <SizeBasedTriggeringPolicy size="20 MB" />
                            </Policies>
                            <DefaultRolloverStrategy max="1" min="1" />
                        </RollingFile>
                    </Route>
                </Routes>
            </Routing>
    
            <RollingFile name="RollingFileMonitor" filepattern="apps/logs/${hostName}-monitor-%i.log"
                filename="apps/logs/${hostName}-monitor.log">
    
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
                <Policies>
                    <SizeBasedTriggeringPolicy size="20 MB" />
                </Policies>
    
            </RollingFile>
    
            <RollingFile name="RollingFileAPM" filename="apps/logs/${hostName}-apm.log"
                filepattern="apps/logs/${hostName}-apm-%i.log">
                <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
                <Policies>
                    <SizeBasedTriggeringPolicy size="20 MB" />
                </Policies>
                <DefaultRolloverStrategy min="1" max="1" />
            </RollingFile>
        </Appenders>
    
    
        <Loggers>
            <Root level="info">
                <AppenderRef ref="Console" />
            </Root>
            <Logger name="com.XXXX.app.service" additivity="false">
                <AppenderRef ref="RollingFileMonitor" />
            </Logger>
            <Logger name="com.XXXX.apm" additivity="false">
                <AppenderRef ref="RollingFileAPM" />
            </Logger>
    
            <Logger name="com.XXXX,config" level="info" additivity="false">
                <AppenderRef ref="info" />
            </Logger>
    
            <Logger name="com.XXXXXX.controller" level="info" additivity="false">
                <AppenderRef ref="RoutingAppender" />
            </Logger>
            <Logger name="com.XXXXX.impl" level="info" additivity="false">
                <AppenderRef ref="RoutingAppender" />
            </Logger>
            <Logger name="com.XXXXX.impl" level="info" additivity="false">
                <AppenderRef ref="RoutingAppender" />
            </Logger>
            <Logger name="com.XXXX.logging" level="info" additivity="false">
                <AppenderRef ref="RoutingAppender" />
            </Logger>
            <Logger name="com.zaxxer.hikari" level="debug" additivity="false">
                <AppenderRef ref="debug" />
            </Logger>
        </Loggers>
    

    希望这能回答你的问题。