序本文主要研究一下logback的FileAppenderFileAppenderch/qos/logback/core/FileAppender.javapublic class FileAppender The default value for this variable is * true, meaning that by default a FileAppender FileAppender继承了OutputStreamAppender,它定义了append、prudent、bufferSize属性start public void start() { checkForFileCollisionInPreviousFileAppenders()) { addError("Collisions detected with FileAppender fileChannel.position(size),最后通过父类writeOut进行写入;对于IOException会执行resilientFOS.postIOFailure(e)小结logback的FileAppender
序 本文主要研究一下rocketmq的FileAppender WriterAppender org/apache/rocketmq/logging/inner/LoggingBuilder.java org/apache/rocketmq/logging/inner/LoggingBuilder.java public static class FileAppender extends WriterAppender protected boolean bufferedIO = false; protected int bufferSize = 8 * 1024; public FileAppender () { } public FileAppender(Layout layout, String filename, boolean append) ("File option not set for appender [" + name + "]."); SysLogger.warn("Are you using FileAppender
序
本文主要研究一下logback的FileAppender
FileAppender
ch/qos/logback/core/FileAppender.java
public class FileAppender The default value for this variable is
* true, meaning that by default a FileAppender = false;
private FileSize bufferSize = new FileSize(DEFAULT_BUFFER_SIZE);
//......
}
FileAppender checkForFileCollisionInPreviousFileAppenders()) {
addError("Collisions detected with FileAppender safeWrite(event);
} else {
super.writeOut(event);
}
}
FileAppender
rootLogger.detachAndStopAllAppenders(); // appender RollingFileAppender<ILoggingEvent> fileAppender = new RollingFileAppender<ILoggingEvent>(); fileAppender.setContext(loggerContext); fileAppender.setName("application"); fileAppender.setFile(file); fileAppender.setAppend %d{yyyy-MM-dd}"); policy.setParent(fileAppender); policy.start(); fileAppender.setRollingPolicy (encoder); fileAppender.start(); rootLogger.addAppender(fileAppender); rootLogger.setLevel
rootLogger.detachAndStopAllAppenders(); // appender RollingFileAppender<ILoggingEvent> fileAppender = new RollingFileAppender<ILoggingEvent>(); fileAppender.setContext(loggerContext); fileAppender.setName("application"); fileAppender.setFile(file); fileAppender.setAppend %d{yyyy-MM-dd}"); policy.setParent(fileAppender); policy.start(); fileAppender.setRollingPolicy (encoder); fileAppender.start(); rootLogger.addAppender(fileAppender); rootLogger.setLevel
appender = LogManager.GetRepository().GetAppenders()[0]; if (appender.Name.Equals("FileAppender ")) { FileAppender fileAppender = (FileAppender) appender; Debug.Log("[logpath]:" + fileAppender.File); } > <log4net> <appender name="<em>FileAppender</em>" type="log4net.Appender.<em>FileAppender</em>"> <file value="log4unity.log newline" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="<em>FileAppender</em>
(); final Layout layout = PatternLayout.createDefaultLayout(config); final Appender fileAppender = FileAppender.newBuilder().setName("target/test.log").withFileName("File") .withImmediateFlush (); addAppender(fileAppender); AppenderRef[] refs = new AppenderRef[]{AppenderRef.createAppenderRef (fileAppender.getName(), null, null)}; LoggerConfig loggerConfig = LoggerConfig.createLogger( org.apache.logging.log4j", "true", refs, null, config, null); loggerConfig.addAppender(fileAppender
ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.core.FileAppender encoder.setImmediateFlush(true); encoder.setContext(lc); /*这里启配置appender*/ FileAppender appender = new FileAppender(); appender.setEncoder(encoder); appender.setFile("/home ; /*删除appender*/ LOG.detachAppender("TestFile"); LOG.error("这条数据不会在FileAppender
设置appender的名字是X,并且定义该appender的实现为org.apache.log4j.FileAppender,即文件读写方式 为X设置显示的方式——layout 真实样例 # Define file log4j.rootLogger = DEBUG, FILE # Define the file appender log4j.appender.FILE=org.apache.log4j.FileAppender 设置FILE的实现为org.apache.log4j.FileAppender,它会把日志信息写入日志目录中叫log.out的文件。 像例子中展示的,它可以同时配置多个appender,每个日志都会独立的发送不到不同的目的地 上面只展示来FileAppender的用法,log4j还有下面的appender以供使用: AppenderSkeleton AysncAppender ConsoleAppender DailyRollingFileAppender ExternallyRolledFileAppender FileAppender JDBCAppender
在代码中获取日志的对象 按照级别设置记录日志信息 代码示例 // log4j的配置文件,名字为log4j.properties, 放在src根目录下 log4j.rootLogger=debug,my,fileAppender ��ʾ log4j.appender.fileAppender=org.apache.log4j.FileAppender log4j.appender.fileAppender.ImmediateFlush = true log4j.appender.fileAppender.Append=true log4j.appender.fileAppender.File=D:/log4j-log.log log4j.appender.fileAppender.layout =org.apache.log4j.PatternLayout log4j.appender.fileAppender.layout.ConversionPattern=%d %5p %c{1}:%L FileAppender常用的选项 ImmediateFlush=true 表示所有消息都会被立即输出。
> <configuration> <appender name="<em>fileAppender</em>" class="ch.qos.logback.core.<em>FileAppender</em>"> 下的类或该类将采用此logger --> <logger name="testSuites.TestLogback" level="INFO"> <appender-ref ref="<em>fileAppender</em> -- root的默认level是DEBUG --> <root level="DEBUG"> <appender-ref ref="<em>fileAppender</em>" /> 右键Run AS->Java Appliance,控制台输出,如下图所示: 2.运行代码后打开日志文件,如下图所示: 2.3输出日志到文件(滚动) 实际生产中,每天都有大量的日志生成,单个文件(FileAppender )已经不能满足要求,RollingFileAppender继承了FileAppender,并提供了更多的功能: (1)每天生成一个日志文件 (2)将前一天的日志重命名为包含日期的格式 (3)根据需要,删除过期历史日志
--文件--> <appender name="<em>fileAppender</em>" class="ch.qos.logback.core.rolling.RollingFileAppender" appender-ref ref="console"/> <appender-ref ref="logstash"/> <appender-ref ref="<em>fileAppender</em> --文件--> <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender" <root level="WARN"> <appender-ref ref="console"/> <appender-ref ref="<em>fileAppender</em>
#include <iostream> #include <log4cpp/Category.hh> #include <log4cpp/Appender.hh> #include <log4cpp/FileAppender.hh :PatternLayout(); pLayout2->setConversionPattern("%d: %p %c %x: %m%n"); log4cpp::Appender* fileAppender = new log4cpp::FileAppender("fileAppender", "wxb.log");//创建一个Appender; fileAppender->setLayout(pLayout1 root = log4cpp::Category::getRoot().getInstance("RootName");//从系统中得到Category的根; root.addAppender(fileAppender
-- 定义输出到日志文件 --> <appender name="R" type="log4net.Appender.<em>FileAppender</em>" rollingStyle="Date" datePattern (文件、控制台、Windows事件日志和数据库(MSSQL、Acess、Oracle、DB2和SQLite等)) 内置的Appdner组件: ConsoleAppender ,输出介质为控制台 FileAppender ,输出介质为文件,示例如下 <appender name="<em>FileAppender</em>" type="log4net.Appender.<em>FileAppender</em>" file="logs/log.txt 示例 : // 和PatternLayout一起使用<em>FileAppender</em> log4net.Config.BasicConfigurator.Configure( new log4net.Appender.<em>FileAppender</em> with an XMLLayout log4net.Config.BasicConfigurator.Configure( new log4net.Appender.<em>FileAppender</em>(
虽然logback已经提供了STDOUT、FILE、DB等多种跟踪信息输出方式,即ConsoleAppender、FileAppender、DBAppender,但针对分布式应用的appender还是需要定制 = log.getAppender("FILE").asInstanceOf[FileAppender[ILoggingEvent]] if(cassAppender ! {ConsoleAppender, FileAppender} import com.datatech.logback. = null) stdoutAppender.stop() if (fileAppender ! = null) fileAppender.stop() */ if(cassAppender !
使用org.apache.log4j.FileAppender可以把日志写到文件中: FileAppender配置 immediateFlush 这个标志默认为true,是否每次有消息产生都自动flush 下面是log4j.properties中FileAppender的相关配置: ##### Define the root logger with appender filelog4j.rootLogger = DEBUG, FILE##### Define the file appenderlog4j.appender.FILE=org.apache.log4j.FileAppender##### Set 那么你可以使用apache.log4j.RollingFileAppender类,它继承了FileAppender,并能设置一些属性达到上面的需求。
Target=System.err:默认情况下是:System.out,指定输出控制台 2.FileAppender 文件选项 Threshold=DEBUF:指定日志消息的输出最低层次。 配置示例 ### 配置根 ### log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE = org.apache.log4j.FileAppender log4j.appender.fileAppender.File = logs/log.log log4j.appender.fileAppender.Append = true log4j.appender.fileAppender.Threshold = DEBUG log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout log4j.appender.fileAppender.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ]
; 例1:log4j.properties: log4j.rootLogger = INFO, FILE, CONSOLE log4j.appender.FILE=org.apache.log4j.FileAppender (将日志信息输出到对应的磁盘文件中); 关于FileAppender的其余选项: log4j.appender.FILE.Threshold = DEBUG(指定日志输出的最低级别 1.5.1 log4j性能测试 在2.3节中,笔者提到了FileAppender,该类主要功能就是将日志信输出到磁盘文件中。 ; } } 配置文件:(没有开启缓存,立即刷入磁盘) <appender name="FILE" class="org.apache.log4j.<em>FileAppender</em>"> <param 创建新的Appender,继承FileAppender,在构造中添加钩子程序代码: public class HookFileAppender extends FileAppender { public
-- 定义输出到日志文件 --> <appender name="R" type="log4net.Appender.<em>FileAppender</em>" rollingStyle="Date" datePattern (文件、控制台、Windows事件日志和数据库(MSSQL、Acess、Oracle、DB2和SQLite等)) 内置的Appdner组件: ConsoleAppender ,输出介质为控制台 FileAppender ,输出介质为文件,示例如下 <appender name="<em>FileAppender</em>" type="log4net.Appender.<em>FileAppender</em>" file="logs/log.txt 示例 : // 和PatternLayout一起使用<em>FileAppender</em> log4net.Config.BasicConfigurator.Configure( new log4net.Appender.<em>FileAppender</em> with an XMLLayout log4net.Config.BasicConfigurator.Configure( new log4net.Appender.<em>FileAppender</em>(
Logback可以通过FileAppender或者RollingFileAppender来实现日志文件本地保存。 FileAppender FileAppender是一种将日志输出到指定文件的Appender。 下面是一个FileAppender的示例: <appender name="file" class="ch.qos.logback.core.<em>FileAppender</em>"> <file>logs/demo.log