log4j配置说明
log4j
appender :用于指定使用的append类
logger:定义logger的名称和其对应的appender
LoggerFactory.getLogger("counter"); //获取xml中定义的loggername为counter的logger对象
一个appender可以定义多个logger
appender :用于指定使用的append类
<appender name="sysAppender" class="com.java.example.log4j.log.B2RollingAppender">
<param name="DatePattern" value="'.'yyyyMMddHHmm" />
<param name="File" value="logs/run.log" />
<!-- 异步日志的开关 -->
<param name="BufferedIO" value="false" />
<param name="BufferSize" value="65535" />
<!-- 每逢20分钟生成一个日志文件 -->
<param name="intervalSeconds" value="1200" />
<param name="Threshold" value="DEBUG" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[batchdeal-invoker]%d{yyyy-MM-dd HH:mm:ss}%p[%t]%C.%M(%L)|%m%n" />
</layout>
</appender>
logger:定义logger的名称和其对应的appender
<logger name="counter" additivity="false">
<level value="INFO" />
<appender-ref ref="sysAppender" />
</logger>
LoggerFactory.getLogger("counter"); //获取xml中定义的loggername为counter的logger对象
---------------------------------------------------------------------------------------------------------------
<!-- log4j 系统日志-->
注:本资料通过网络查找然后整理而成
首先要对配置文件的各个参数进行说明,这样才能合理的进行配置。
参数意义说明:
配置根Logger
- 其语法为:
- log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
- level: 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或
- 者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
- appenderName: 就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
- 例如:log4j.rootLogger=info,A1,B2,C3
输出级别的种类
- OFF 、FATAL 、ERROR、WARN、INFO、DEBUG、TRACE 、ALL
- OFF 为最高等级 关闭了日志信息
- FATAL 为可能导致应用中止的严重事件错误
- ERROR 为严重错误 主要是程序的错误
- WARN 为一般警告,比如session丢失
- INFO 为一般要显示的信息,比如登录登出
- DEBUG 为程序的调试信息
- TRACE 为比DEBUG更细粒度的事件信息
- ALL 为最低等级,将打开所有级别的日志
配置日志信息输出目的地
- log4j.appender.appenderName = fully.qualified.name.of.appender.class
- 1.org.apache.log4j.ConsoleAppender(控制台)
- 2.org.apache.log4j.FileAppender(文件)
- 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
- 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
- 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式
- log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
- 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
- 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
- 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
- 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
- <strong>控制台选项</strong>
- Threshold=DEBUG:指定日志消息的输出最低层次。
- ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
- Target=System.err:默认情况下是:System.out,指定输出控制台
- <strong>FileAppender 选项</strong>
- Threshold=DEBUF:指定日志消息的输出最低层次。
- ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
- File=mylog.txt:指定消息输出到mylog.txt文件。
- Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
- <strong>RollingFileAppender 选项</strong>
- Threshold=DEBUG:指定日志消息的输出最低层次。
- ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
- File=mylog.txt:指定消息输出到mylog.txt文件。
- Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
- MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
- MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
- log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
日志信息格式中几个符号所代表的含义:
- -X号: X信息输出时左对齐;
- %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
- %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
- %r: 输出自应用启动到输出该log信息耗费的毫秒数
- %c: 输出日志信息所属的类目,通常就是所在类的全名
- %t: 输出产生该日志事件的线程名
- %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
- %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
- %%: 输出一个"%"字符
- %F: 输出日志消息产生时所在的文件名称
- %L: 输出代码中的行号
- %m: 输出代码中指定的消息,产生的日志具体信息
- %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
- 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
- 1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
- 2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
- 3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
- 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。
log4j.xml配置如下,log4j.xml存放在WEB-INF目录下:
- <?xml version="1.0" encoding="GBK" ?>
- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
- <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
- <!-- 输出日志到控制台 ConsoleAppender -->
- <appender name="console"
- class="org.apache.log4j.ConsoleAppender">
- <param name="Threshold" value="info"></param>
- <layout class="org.apache.log4j.TTCCLayout">
- <param name="ConversionPattern" value="TTCCLayout"></param>
- </layout>
- </appender>
- <!-- 输出日志到文件 每天一个文件 -->
- <appender name="dailyRollingFile"
- class="org.apache.log4j.DailyRollingFileAppender">
- <param name="Threshold" value="info"></param>
- <param name="ImmediateFlush" value="true"></param>
- <param name="File" value="c:/logs/dailyRollingFile.log"></param>
- <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
- </layout>
- </appender>
- <!-- 输出日志到文件 文件大小到达指定尺寸的时候产生一个新的文件 -->
- <appender name="railyFile"
- class="org.apache.log4j.RollingFileAppender">
- <param name="File" value="c:/logs/railyFile.log"></param>
- <param name="ImmediateFlush" value="true"/>
- <param name="Threshold" value="info"></param>
- <param name="Append" value="true"></param>
- <param name="MaxFileSize" value="30KB"></param>
- <param name="MaxBackupIndex" value="100"></param>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
- </layout>
- </appender>
- <!-- 输出日志到文件 -->
- <appender name="file"
- class="org.apache.log4j.FileAppender">
- <param name="File" value="c:/logs/file.log"></param>
- <param name="Threshold" value="info"></param>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
- </layout>
- </appender>
- <!--
- 定义全局的日志输出级别,但是在输出目的地的配置中配置的具体输出级别优先级高于全局定义的优先级。
- 如果在railyFile中定义<param name="Threshold" value="info"></param>,那么将会把info以上级别的信息输出
- -->
- <root>
- <priority value="debug" />
- <appender-ref ref="console" />
- <appender-ref ref="dailyRollingFile" />
- <appender-ref ref="railyFile" />
- <appender-ref ref="file" />
- </root>
- </log4j:configuration>
在web.xml中添加log4j.xml配置
- <!-- log4j 系统日志-->
- <context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>/WEB-INF/log4j.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
- </listener>
对Logger的简单封装:
BasicConfigurator.configure();默认先读取log4j.xml,如果不存在则再读取log4j.properties.
- public class Log4jUtil {
- private static final String configFile = "log4j.xml";
- static{
- BasicConfigurator.configure();
- }
- public Log4jUtil() {
- super();
- }
- public static String getConfigFile(){
- return configFile;
- }
- public static Logger getLogger(Class clazz){
- return Logger.getLogger(clazz);
- }
- public static Logger getLogger(String strClass){
- return Logger.getLogger(strClass);
- }
- public static Logger getLogger(String strClass,LoggerFactory loggerFactory){
- return Logger.getLogger(strClass, loggerFactory);
- }
- }
最后只需在代码中调用即可,格式如下:
- public class HelloLog4j {
- private static Logger logger = Logger.getLogger(HelloLog4j.class);
- public String getURL(){
- logger.info("getURL() ... ");
- return null;
- }
- }
这样log4j就配置成功了。
log4j配置说明的更多相关文章
- Log4j配置说明及样例
一般的应用都会记录日志,Java圈里面用得最多就属log4j了,比较规范一点就是使用log4j.xml进行配置Log输出.这里就比较有疑问,多数情况是使用log4j.properties文件呐,前面也 ...
- Apache Log4j配置说明
1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Log4j主要由三大类组件构成: 1)Logger-负责输出日志信息,并能够对日志信息进行分类筛选,即决 ...
- Android中使用Log4j及配置说明
目前在进行Android开发时使用到了log4j,现在对其配置进行记录. 1. android-logging-log4j 下载地址 https://code.google.com/archive/p ...
- log4j的使用详细解析
1 Log4j配置说明 1.1 配置文件Log4j可以通过java程序动态设置,该方式明显缺点是:如果需要修改日志输出级别等信息,则必须修改java文件,然后重新编译,很是麻烦: log4j也可以通过 ...
- commons-logging和log4j
1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...
- Log4j使用教程 log4:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
1.Logger类 通过Logger类的静态方法Logger.getRootLogger得到RootLogger.所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的 ...
- Log4j配置全说明
转载:http://zhangjunhd.blog.51cto.com/113473/21014/ 1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Lo ...
- Apache Log4j使用实例
Apache Log4j使用实例 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. Blog: 1.Logger类 通过Logger类的静 ...
- commons-logging log4j的联系区别
1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...
随机推荐
- mybaits中插入到mysql数据库自动返回id主键
在做电商项目时,做到添加商品时,添加商品涉及到图片表和最小销售单元表,这两个表有商品的id,添加图片和最小销售单元,要先返回产品的id.具体做法如下 <insert id="addPr ...
- [综]聚类Clustering
Annie19921223的博客 [转载]用MATLAB做聚类分析 http://blog.sina.com.cn/s/blog_9f8cf10d0101f60p.html Free Mind 漫谈 ...
- [ZZ] Equal Error Rate (EER)
这篇博客很全面 http://www.cnblogs.com/cdeng/p/3471527.html ROC曲线 1.混淆矩阵(confusion matrix) 针对预测值和真实值之间的关系,我们 ...
- android模拟器停在Waiting for HOME解决方案
直接打开Android SDK Manager然后再从Android SDK Manager里的tools打开Android AVD Manager,删除掉在Eclipse里创建的模拟器.并在新建一个 ...
- Android学习笔记(九)
Android中的四种基本布局 1.LinearLayout LinearLayout称为线性布局,是一种常用的布局.修改activity_main.xml中的代码,如下所示: <LinearL ...
- mfc 连连看3.2 修改器
内涵图 连连看3.2下载
- 手机平板等移动端适配跳转URL的js代码
<script type="text/javascript"> if(/AppleWebKit.*mobile/i.test(navigator.userAgent) ...
- SQL数据库添加新账号,只操作指定数据库
思路: 1.创建数据库服务器登录用户 2.创建指定数据库的用户,并且和服务器用户联系起来 3.给数据库的用户添加角色 代码实现: 1.创建名为login的服务器登录用户dba,尼玛dbpwd,默认数据 ...
- 关于a标签点击会出现的背景色的问题
同事今天在tap里面有a标签,并且给a标签块化之后,点击tap切换时会出现背景色,解决方案: body { margin: 0 auto; max-width:100%; background: #f ...
- web应用程序逻辑架构