序 本文主要研究一下rocketmq的RollingFileAppender RollingFileAppender org/apache/rocketmq/logging/inner/LoggingBuilder.java public static class RollingFileAppender extends FileAppender { protected long maxFileSize protected int maxBackupIndex = 1; private long nextRollover = 0; public RollingFileAppender rollOver 这里定义了maxFileSize,即单个文件的大小,然后还定义了nextRollover索引 这里使用的是CountingQuietWriter,里头有个count来累积计算字符串的长度 RollingFileAppender.rollOver nextRollover的值,然后根据maxBackupIndex来递增重命名文件,然后再把现有的文件重名为为.1后缀 重命名成功之后,再对新的文件进行setFile相关设置,关联writer,写入header 小结 RollingFileAppender
RollingFileAppender选项 Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
3、RollingFileAppender选项 Threshold=DEBUG:指定日志消息的输出最低层次。 File=mylog.txt:指定消息输出到mylog.txt文件。
<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>(); rollingFileAppender.setAppend (true); rollingFileAppender.setContext(context); // OPTIONAL: Set an active log file //rollingFileAppender.setFile(LOG_DIR + "/log.txt"); TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy rollingPolicy.setContext(context); rollingPolicy.start(); rollingFileAppender.setRollingPolicy (encoder); rollingFileAppender.start(); LogcatAppender logcatAppender = new LogcatAppender
4.2 输出方法 在Logback中,Info日志输出通过RollingFileAppender实现。 以下是一个简单的RollingFileAppender配置示例: <appender name="FILE" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> Info日志:通过<em>RollingFileAppender</em>实现,支持日志文件的滚动和归档,适合长期保存日志。 此时,可以只配置ConsoleAppender,或者同时配置ConsoleAppender和<em>RollingFileAppender</em>,以便在需要时查看文件日志。 此时,可以只配置<em>RollingFileAppender</em>,或者同时配置ConsoleAppender和<em>RollingFileAppender</em>,以便在需要时查看控制台日志。 7.
--默认逻辑info-warn级别--> <appender name="InfoLoging" type="log4net.Appender.<em>RollingFileAppender</em> --默认逻辑Error+级别--> <appender name="ErrorLoging" type="log4net.Appender.<em>RollingFileAppender</em> --其它逻辑Error+级别--> <appender name="OtherErrorLoging" type="log4net.Appender.<em>RollingFileAppender</em> "> type="log4net.Appender.RollingFileAppender,log4net" > <File value="App_Data\Log\LogTipMsg.log --默认逻辑Error+级别--> <appender name="ErrorLoging" type="log4net.Appender.<em>RollingFileAppender</em>
-- conf file out --> 11 <appender name="file_out" class="ch.qos.logback.core.<em>RollingFileAppender</em>"> 12 <rollingPolicy> : 当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 RollingFileAppender 的file 子节点可有可无,通过设置file,可以为活动文件和归档文件制定不同位置,当前日志总是纪录到file指定的文件,活动文件的名称不会改变,如果没有设置file 激活RollingFileAppender滚动 1 <! – conf infoAppender out –> <appender name=”infoAppender” class=”ch.qos.logback.core.RollingFileAppender
3.4.2:RollingFileAppender RollingFileAppender,是FileAppender的一个子类,扩展了FileAppender,具有翻转日志文件的功能。 有两个与RollingFileAppender交互的重要子组件。第一个RollingFileAppender子组件,即 RollingPolicy 负责执行翻转所需的操作。 RollingFileAppender的第二个子组件,即 TriggeringPolicy 将确定是否以及何时发生翻转。 --有两个与RollingFileAppender交互的重要子组件。 第一个RollingFileAppender子组件,即RollingPolicy:负责执行翻转所需的操作。 --有两个与RollingFileAppender交互的重要子组件。 第一个RollingFileAppender子组件,即RollingPolicy:负责执行翻转所需的操作。
/level> </filter> </appender> <appender name="infofile" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> level> </filter> </appender> <appender name="errorfile" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> /level> </filter> </appender> <appender name="infofile" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> level> </filter> </appender> <appender name="errorfile" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> -- 监控大盘 log 文件输出--> <appender name="appender-metrics-log" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>
Logger.ROOT_LOGGER_NAME); rootLogger.detachAndStopAllAppenders(); // appender RollingFileAppender <ILoggingEvent> fileAppender = new RollingFileAppender<ILoggingEvent>(); fileAppender.setContext dubbo.logback.maxhistory,最后调用doInitializer;doInitializer方法先获取rootLogger,然后执行detachAndStopAllAppenders,然后配置RollingFileAppender dubbo.logback.maxhistory,最后调用doInitializer;doInitializer方法先获取rootLogger,然后执行detachAndStopAllAppenders,然后配置RollingFileAppender
Logger.ROOT_LOGGER_NAME); rootLogger.detachAndStopAllAppenders(); // appender RollingFileAppender <ILoggingEvent> fileAppender = new RollingFileAppender<ILoggingEvent>(); fileAppender.setContext dubbo.logback.maxhistory,最后调用doInitializer;doInitializer方法先获取rootLogger,然后执行detachAndStopAllAppenders,然后配置RollingFileAppender dubbo.logback.maxhistory,最后调用doInitializer;doInitializer方法先获取rootLogger,然后执行detachAndStopAllAppenders,然后配置RollingFileAppender
ch.qos.logback.core.rolling.RollingFileAppender:文件大小超过阈值时产生一个新文件。 --See http://logback.qos.ch/manual/appenders.html#RollingFileAppender--> <! --See http://logback.qos.ch/manual/appenders.html#RollingFileAppender--> <! 第二,RollingFileAppender 需要指定 RollingPolicy 和 TriggeringPolicy,前者负责日志的滚动功能,后者负责日志滚动的时机。 来看下面这个 RollingFileAppender 配置: <appender name="D" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>
-- 将日志信息输出到文件,但是当文件的大小达到某个阈值的时候,日志文件会自动回滚 --> <appender name="<em>RollingFileAppender</em>" class="org.apache.log4j.<em>RollingFileAppender</em> -- 设置日志信息输出文件全路径名 --> <param name="File" value="D:/log4j/<em>RollingFileAppender</em>.log" /> test.log4j.test8.UseLog4j_" additivity="false"> <level value ="ERROR"/> <appender-ref ref="<em>RollingFileAppender</em>
</encoder> </appender> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> </filter> </appender> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> </filter> </appender> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>
-- 输出到文件 --> <appender name="file" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>"> <file 第二个Appender的class属性设置为RollingFileAppender,表示将日志输出到文件。其中,文件名为log/demo.log,日志文件会按照日期进行切分。 Logback可以通过FileAppender或者RollingFileAppender来实现日志文件本地保存。 RollingFileAppender RollingFileAppender是一种按照一定规则切分日志文件的Appender。它可以按照时间、文件大小等规则来切分日志文件。 下面是一个RollingFileAppender的示例: <appender name="file" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n #common log appender # log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.MaxBackupIndex=30 #error log appender # log4j.appender.errorfile=org.apache.log4j.RollingFileAppender log4j.appender.errorfile.MaxBackupIndex=30 #sql log appender # log4j.appender.sqllog=org.apache.log4j.RollingFileAppender log4j.appender.sqllog.MaxBackupIndex=30 #velocity log appender # log4j.appender.velocityfile=org.apache.log4j.RollingFileAppender log4j.appender.velocityfile.MaxBackupIndex=30 #profile appender # log4j.appender.profiler=org.apache.log4j.RollingFileAppender
withModulate(true) .withInterval(1) .build(); final Appender appender = RollingFileAppender.newBuilder addAppender(appender, Level.DEBUG, filter); ctx.updateLoggers(config); } 这段代码动态生成一个名为omainCntCoreLog的RollingFileAppender 该logger在使用domainCntCoreLog这个RollingFileAppender时还设置了一个过滤器ThreadContextMapFilter,这个Filter用来控制logger只能对指定了 对ThreadContextMapFilter的补充 上边通过代码动态生成了RollingFileAppender和ThreadContextMapFilter,下边记录下配置文件里的写法: 1 2 > </Policies> </RollingFile> 这种方法只能生成一个domain appender,此外如果启用了动态加载配置文件的功能,在扫描配置文件是否改动时,还会报错,原因是在RollingFileAppender
> <configuration> <appender name="serviceAppender" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> encoder> </appender> <appender name="daoAppender" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> appender 1.新建一个错误日志的appender,代码如下: <appender name="errorAppender" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> > <configuration> <appender name="serviceAppender" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> </filter> </appender> <appender name="errorAppender" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>
RollingFileAppender会有些限制。Logback的FileAppender和它的子类包括 RollingFileAppender能够非常友好地从I/O异常中恢复。 自动压缩已经打出来的log:RollingFileAppender在产生新文件的时候,会自动压缩已经打出来的日志文件。压缩是个异步过程,所以甚至对于大的日志文件,在压缩过程中应用不会受任何影响。 -- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender --> <appender name="ERROR" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> -- WARN级别日志 appender --> <appender name="WARN" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> -- INFO级别日志 appender --> <appender name="INFO" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>
除了这三个常用元素之外,还可以包含 appender 类的任意数量的 javabean 2.5.3 运用滚动策略与触发策略 RollingFileAppender 继承 FileAppender,能够滚动记录文件 例如,RollingFileAppender能先记录到文件"log.txt",然后当符合某个条件时,变成记录到其他文件。 RollingFileAppender 有两个与之互动的重要子组件。 要想 RollingFileAppender 起作用,必须同时设置 RollingPolicy 和 TriggeringPolicy。 encoder> appender> <appender name="businessLogFile" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em> encoder> appender> <appender name="errorlogFile" class="ch.qos.logback.core.rolling.<em>RollingFileAppender</em>