本文以slf4j.1.7.19为源码展示样例。
项目中用的Appender是org.apache.log4j.RollingFileAppender
在配置文件中加以下两句可以减少磁盘IO操作
log4j.appender.all.bufferedIO=true log4j.appender.all.bufferSize=81920
第一个表示IO使用缓冲区;
第二个参数表示缓冲区的大小,单位是B,字节;
相关源码如下:org.apache.log4j.FileAppender
public synchronized void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize) throws IOException { LogLog.debug("setFile called: "+fileName+", "+append); // It does not make sense to have immediate flush and bufferedIO. if(bufferedIO) { setImmediateFlush(false); } reset(); FileOutputStream ostream = null; try { // // attempt to create file // ostream = new FileOutputStream(fileName, append); } catch(FileNotFoundException ex) { // // if parent directory does not exist then // attempt to create it and try to create file // see bug 9150 // String parentName = new File(fileName).getParent(); if (parentName != null) { File parentDir = new File(parentName); if(!parentDir.exists() && parentDir.mkdirs()) { ostream = new FileOutputStream(fileName, append); } else { throw ex; } } else { throw ex; } } Writer fw = createWriter(ostream); if(bufferedIO) { fw = new BufferedWriter(fw, bufferSize); } this.setQWForFiles(fw); this.fileName = fileName; this.fileAppend = append; this.bufferedIO = bufferedIO; this.bufferSize = bufferSize; writeHeader(); LogLog.debug("setFile ended"); }
可见只有bufferedIO配置为true,才会使用缓冲区。
bufferedIO默认为false,相关源码如下:
/** Do we do bufferedIO? */ protected boolean bufferedIO = false; /** * Determines the size of IO buffer be. Default is 8K. */ protected int bufferSize = 8*1024;
bufferSize默认为8K,如果够用的话,可以不配置,只配置bufferedIO为true,即可。
另外,如果IO确实是应用的瓶颈,可以考虑使用org.apache.log4j.AsyncAppender。这是异步的操作。
相关推荐
log4j.appender.testfile=org.apache.log4j.FileAppender log4j.appender.testfile.File=c\:\\file.html log4j.appender.testfile.Append=false log4j.appender.testfile.layout=org.apache.log4j.HTMLLayout log4j...
log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=file.log log4j.appender.FILE.Append=false log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE....
解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${WORKDIR}/”是个变量,会被System Property中的“WORKDIR...
org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), ...
本文档提供log4j配置相对路径三种方法:log4j.properties文件配置、xml文件配置和通过servlet初始化方式来配置,希望对大家有所帮助
Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 3. Log level 4. 示例代码 5. 关于logger的两点说明 3. Appender:日志目的地 1. ConsoleAppender 2. ...
log4j详解与实战 - 企业应用 Logger - 日志写出器,供程序员输出日志信息 Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去 ConsoleAppender - 目的地为控制台的Appender FileAppender - 目的地...
Java开发中使用Log4j 来记录log非常的方便,但是出现问题时需要查询Log时是很痛的,因为Log4j只提供了将Log记录的文件的方法却没有将...特此扩展了Log4j 中的FileAppender ,让其可以按小时来记录Log。或者按天来记录。
本工程用于研究log4j日志输出目的地org.apache.log4j.FileAppender的使用方法 本工程编码方式:UTF-8 本工程开发工具:MyEclipse
以json格式输出应用程序日志 作者:史蒂夫·里格比 ... log4j.appender.Json=org.apache.log4j.FileAppender log4j.appender.Json.File=${logfilename}.json log4j.appender.Json.layout=net.logstash.
--15-Log4j的FileAppender配置.mp4 --16-Log4j的JDBCAppender配置.mp4 --17-Log4j的自定义logger.mp4 --18-JCL入门介绍.mp4 --19-JCL原理介绍.mp4 -- ---讲义 -日志技术(上).pdf - --day02 -day02资料.zip -
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" > <param name="File" value="log-file.txt" /> <layout type="log4net.Layout.PatternLayout"> [Header] "/> [Footer] "/> [%t]...
2)Appender,用于将Log记录到指定的媒介上,比如有ConsoleAppender,将Log信息输出到控制台上,FileAppender,将Log信息数到到文件中。可以向log4qt库同时指定多个Appender,则各类事件就会同时被输出到多个媒介上...
扩展了Log4qt中的FileAppender类(DynamicFileAppender)是他可以根据需求将Log记录到不同的File中。如每小时记录一个Log等。
log4net实例,多种输出方式: AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。 ConsoleAppender 将日志输出到应用程序控制台。 EventLogAppender 将日志写到Windows Event Log。 ...
#如果一条日志信息的级别大于等于配置文件的级别,就记录配置输出源所对应的辅助类:log4j.appender.输出源名称=类名,如果输出到文件就写FileAppender #指定文件名 Tomcat的根目录: #指定布局方式(消息放入文件...
Log4cpp 修改版,基于Log4cpp-1.1.3 1、新增Microsoft Visual Studio 2008的解决方案,并修正几处兼容性问题。 2、新增Microsoft Visual Studio 2017的解决方案,并修正几处兼容性问题。 3、新增Microsoft Visual...
type="log4net.Appender.FileAppender" > <param name="File" value="log-file.txt" /> <layout type="log4net.Layout.PatternLayout"> [Header]\r\n"/> [Footer]\r\n"/> value="%d [%t] %-5p %...
常用的配置文件定义有三种不同的Appender,分别是ADO.NET 记录到数据,ConsoleAppender 从控制台输出, FileAppender 日志信息...然而Log4Net 的配置附着器远不止这些,这里上传一个比较全的附着器配置文件供大家参考。
android log记录所需要的文件 1、建立使用logger对象 private static final Logger logger = LoggerFactory.getLogger(main.class); 2、在程序的第activit或者service的oncreate方法里初始化方法 ...