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, ...
随机推荐
- Ubuntu 16.04 安装ftp服务器传输文件
最近在搞深度学习,老师比较宝贝他的服务器,要求我以后负责管理服务器.往后所有要使用服务器的人都必须向我申请账号,然后只允许客户端访问,使用文件传输软件传输文件.像我这样一个linux菜逼,这种要求不是 ...
- php://input
从官网信息来看,php://input是一个只读信息流,当请求方式是post的,并且enctype不等于"multipart/form-data"时,可以使用php://input ...
- 第一章 数据库概述、MySQL的安装和配置
第一章 数据库概述.MySQL的安装和配置 1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...
- MFC ADO连接Sql Server数据库报无效指针的问题
相关症状: Win7sp1上编译的ADO程序无法在低版本系统上运行,创建ADO时提示错误:0x80004002 解决办法如下: 1.下载: http://download.microsoft.c ...
- 带你入门带你飞Ⅰ 使用Mocha + Chai + Sinon单元测试Node.js
目录 1. 简介 2. 前提条件 3. Mocha入门 4. Mocha实战 被测代码 Example 1 Example 2 Example 3 5. Troubleshooting 6. 参考文档 ...
- 如何在Mac系统里面更新 Ansible 的 Extra Modules
最近遇到一个问题 seport is not a legal parameter in an Ansible task or handler 原因是我本地 Ansible 的 Extra Module ...
- 通过seekBar改变图片的透明度
作者:堕落的天使 对应的图片 activity_main.xml(代码) <RelativeLayout xmlns:android="http://schemas.android.c ...
- [转] 主流JS框架中DOMReady事件的实现
在实际应用中,我们经常会遇到这样的场景,当页面加载完成后去做一些事情:绑定事件.DOM操作某些结点等.原来比较常用的是window的onload 事件,而该事件的实际效果是:当页面解析/DOM树建立完 ...
- matlab的滤波器仿真——低通滤波器与插值滤波器
项目里面有用到插值滤波器的场合,用matlab做了前期的滤波器性能仿真,产生的滤波器系数保存下来输入到FPGA IP中使用即可. 下面是仿真的代码 % clear all close all Nx = ...
- FLAG_ACTIVITY_CLEAR_TOP
看了一篇相关的文章,感觉还不错,链接http://www.cnblogs.com/lwbqqyumidi/p/3775479.html