`

log4j学习笔记

阅读更多

 

    项目部署到线上之后,出现问题很多时候查看问题是通过查看日志来定位问题越详细的日志对定位问题越有帮助,这里我们用的多的是log4j插件来记录日志,log4j是一款很成熟的日志记录插件,通过配置文件记录日志,可以通过log4j.xml、log4j.properties、log4j.dtd等文件配置,花了一下午的时间上网找资料,整理了一套log4j.xml的配置信息。

    参考地址:

        1、http://blog.csdn.net/lujiancs/article/details/8285297

        2、http://wenku.baidu.com/link?url=RYjRaXDA0kWN7HpogdSdodCblcnGcbmVTxBaEqNiwz7m6T18ucjFsaCnD2l1mH1ezEd_K5ICP2sQtt8P72xyjbjn6pT4nE3qM74o2SK2vEu

        3、http://zhangxiang390.iteye.com/blog/258455

 

1、下面列一项通过整理加注释的log4j.xml文件来详细说明

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<!--
		设置通道名称和输出方式,其中输出方式appender有5种,分别为
		org.apache.log4j.ConsoleAppender (控制台)
		org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志到指定文件)
		org.apache.log4j.FileAppender (文件)  
		org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)  
		org.apache.log4j.WriterAppender (将日志信息以流格式发送到指定地方)
	--> 
	<!--输出方式:输出到控制台-->  
	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
	    <!--
			参数都以%开始后面不同的参数代表不同的格式化信息:  
			%c  输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的范围
				如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName   
			%d  输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}  
			%l  输出日志事件发生位置,包括类目名、发生线程,在代码中的行数 
			%n  换行符  
			%m  输出代码指定信息,如info(“message”),输出message  
			%p  输出优先级,即 FATAL ,ERROR 等  
			%r  输出从启动到显示该log信息所耗费的毫秒数  
			%t  输出产生该日志事件的线程名
		--> 
		<!-- 输出形式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/>
		</layout>
		
		<!--过滤器设置输出的级别--> 
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
		    <!-- 优先级由高到低分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这四个级别 -->
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>
	
	
	<!-- 以下根据级别将日志信息输出到不同的文件中 -->
	<!-- 将ALL级别日志都输入到指定文件中 -->
	<appender name="ALL" class="org.apache.log4j.RollingFileAppender">
	    <!-- 日志编码格式 -->
	    <param name="Encoding" value="UTF-8" />  
	    <!-- 设置日志输出文件名和路径 --> 
		<param name="File" value="${catalina.base}/log/support.log"/>	
		<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> 
		<param name="Append" value="true"/>
		<!-- 设置日志文件最大值 -->
		<param name="MaxFileSize" value="5240KB"/>
		<param name="MaxBackupIndex" value="100"/>	
		<!-- 输出形式 -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/>
		</layout>
		
		<!--过滤器设置输出的级别-->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="FATAL" />
		</filter>
	</appender>
	
	<!-- 设定级别为ERROR的配置信息,并将error的信息输入到指定文件 -->
	<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
	    <param name="Encoding" value="UTF-8" />  
		<param name="File" value="${catalina.base}/log/support-error.log"/>
		<param name="Append" value="true"/>
		<param name="MaxFileSize" value="10240KB"/>
		<param name="MaxBackupIndex" value="100"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/>
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>
	
	
	<!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制-->  
	<!-- 指定项目路径、jar包路径下的日志输出级别 -->
	<logger name="org.springframework" additivity="false">  
	    <!-- 日志输出级别 --> 
	    <level value="INFO" />
	    <!-- 定义继承的父类 -->
	    <appender-ref ref="ALL" />
	    <appender-ref ref="STDOUT"/>
	    <appender-ref ref="ERROR"/>
	</logger>
	
	<logger name="org.apache.commons.httpclient" additivity="false">   
	    <level value="INFO" />
	    <appender-ref ref="ALL" />
	    <appender-ref ref="STDOUT"/>
	    <appender-ref ref="ERROR"/>
	</logger>
	
	<logger name="httpclient.wire" additivity="false">   
	    <level value="INFO" />
	    <appender-ref ref="ALL" />
	    <appender-ref ref="STDOUT"/>
	    <appender-ref ref="ERROR"/>
	</logger>
	
	<!-- 指定项目路径下的日志输出级别 com.gamexun.support为项目路径-->  
	<logger name="com.gamexun.support" additivity="false">   
	    <level value="DEBUG" />
	    <appender-ref ref="ALL" />
	    <appender-ref ref="STDOUT"/>
	    <appender-ref ref="ERROR"/>
	</logger>
	
	<logger name="org.quartz.core" additivity="false">   
	    <level value="INFO" />
	    <appender-ref ref="ALL" />
	    <appender-ref ref="STDOUT"/>
	    <appender-ref ref="ERROR"/>
	</logger>
	<logger name="org.mybatis" additivity="false">   
	    <level value="INFO" />
	    <appender-ref ref="ALL" />
	    <appender-ref ref="STDOUT"/>
	    <appender-ref ref="ERROR"/>
	</logger>
	
	
	<!-- 根logger的设置-->  
	<root>
		<appender-ref ref="STDOUT"/>
		<appender-ref ref="ALL"/>
		<appender-ref ref="ERROR"/>
	</root>
</log4j:configuration>

 

2、在项目中引入log4j

    如果建立的是web项目,直接将log4j.xml放入src跟目录下即可;

    如果有其他情况找不到的话,可以再web.xml配置,也可以通过其他方式配置如spring.....

 

3、java中应用

public class MenuController extends BaseController{
	//申明
	private static Log log = LogFactory.getLog(MenuController.class);
	
	public AjaxResponse<String> remove(@RequestParam int id, HttpServletRequest request) {
		try {
			....
		} catch (Exception e) {
			log.error("该菜单已分配权限,请先删除权限!", e);
		}
		....
	}

	
	public AjaxResponse<String> getGameKey() {
		AjaxResponse<String> res = new AjaxResponse<String>();
		try {
			......
		} catch (Exception e) {
			log.info("get AdminInfo faile", e);
			.....
		}
		return res;
	}
}

 

 

 

分享到:
评论

相关推荐

    log4j 学习 笔记

    log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记

    Log4j 学习笔记

    Log4j 学习笔记

    Log4j 学习笔记.doc

    Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 3. Log level 4. 示例代码 5. 关于logger的两点说明 3. Appender:日志目的地 1. ConsoleAppender 2. ...

    Log4j学习笔记和一套完整定义实例

    Log4j学习笔记和一套完整定义实例 精辟

    log4j 学习笔记

    log4j 学习笔记 自己整理出来的 网上写的很杂乱。其实在java企业级中开发 我们更重视的是如何做日志记录。本笔记快速入门使用 log4j 节省了企业开发的学习成本

    Log4J学习笔记

    Log4J学习笔记 1、配置文件 2、数据库 3、封装

    log4J学习笔记

    log4j的详细学习笔记,最适合初级、中级学员

    log4j学习笔记.

    log4j学习笔记.

    *Log4j 学习笔记

    *Log4j 学习笔记,自己的一点学习经验

    log4j学习笔记及写入数据库配置

    log4j学习笔记及写入数据库配置,一份log4j学习资料。还包含log4j写入数据库的配置方法。

    Log4j学习笔记

    供初学人员学习,包括log4J的文件配置以及代码示例

    不错的 log4j 学习 笔记

    log4j的学习笔记,网上找到的,写的很不错

    日志管理Log4j学习笔记

    Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j ,我们可以控制日志信 送的目的地是控制台、文件、 GUI 组件、甚至是套接口服务器、 NT 的事件记录器、 X Syslog 守护进程等;我们也可以控制每一条日志的...

    log4j详细的学习笔记.

    log4j学习笔记.培训架构的学习资料,分享给大家,希望对大家有用!

    Log4j2学习log4j2.xml配置模板

    Log4j2学习笔记,引入log4j2的依赖-log4j2.xml配置模板-application.properties文件配置-使用

    Log4j学习笔记,个人整理

    在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件...

    Log学习笔记——Log4j配置笔记.md

    Log4j log for java(java的日志) 是java主流的日志框架,提供各种类型,各种存储,各种格式,多样化的日志服务。Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、...

    Log4j入门学习笔记

    pptx格式。Log4j详细讲解。Logger--日志写出器,供程序员输出日志信息 。Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。

Global site tag (gtag.js) - Google Analytics