Log4j 实例

1.Maven 配置

<dependency>  
	<groupId>org.slf4j</groupId>  
	<artifactId>slf4j-api</artifactId>  
	<version>1.7.7</version>  
</dependency>  
<dependency>  
	<groupId>org.slf4j</groupId>  
	<artifactId>slf4j-log4j12</artifactId>  
	<version>1.7.7</version>  
</dependency>
<dependency>  
    <groupId>log4j</groupId>  
    <artifactId>log4j</artifactId>  
    <version>1.2.17</version>
</dependency>

2.测试代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Log4jTest {

	static public Logger logger = LoggerFactory.getLogger(Log4jTest.class); 
	
	public static void main(String[] args) {
		// System.out.println("This is println message.");  
	    // 记录debug级别的信息  
	    logger.debug("This is debug message.");  
	    // 记录info级别的信息  
	    logger.info("This is info message.");  
	    // 记录error级别的信息  
	    logger.error("This is error message.");  
	} 
}

问题:html

log4j:WARN No appenders could be found for logger (testSite.Log4jTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

log4j.properties 配置文件缺失,即 src/main/resources 下无此文件java

3.log4j.properties 配置

rootLogger 部分

#日志 输出级别 为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者自定义的级别,Log4j建议只使用中间四个级别。 
#第一个参数为 输出 日志级别 ,后面参数为 Appender
log4j.rootLogger=DEBUG,console,dailyFile....
# 表示Logger不会在父Logger的appender里输出,默认为true
log4j.additivity.org.apache=false

Appender 日志输出解析

控制台spring

# 控制台(console)#
log4j.appender.console=org.apache.log4j.ConsoleAppender
# Threshold:指定日志信息的最低输出级别,默认为DEBUG #
log4j.appender.console.Threshold=DEBUG
# ImmediateFlush:表示全部消息都会被当即输出,设为false则不输出,默认值是true #
log4j.appender.console.ImmediateFlush=true
# Target:默认值是System.out #
log4j.appender.console.Target=System.err
#layout
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

文件sql

# 日志文件(logFile)#
log4j.appender.logFile=org.apache.log4j.FileAppender
# Threshold:指定日志信息的最低输出级别,默认为DEBUG。#
log4j.appender.logFile.Threshold=DEBUG
# ImmediateFlush:表示全部消息都会被当即输出,设为false则不输出,默认值是true#
log4j.appender.logFile.ImmediateFlush=true
# Append:true表示消息增长到指定文件中,false则将消息覆盖指定的文件内容,默认值是true#
log4j.appender.logFile.Append=true
# File:指定消息输出到logging.log4j文件中。#
log4j.appender.logFile.File=D:/logs/log.log4j
#layout
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

天天产生一个日志文件apache

# 按期回滚日志文件(dailyFile)#
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
# Threshold:指定日志信息的最低输出级别,默认为DEBUG。#
log4j.appender.dailyFile.Threshold=DEBUG
# ImmediateFlush:表示全部消息都会被当即输出,设为false则不输出,默认值是true#
log4j.appender.dailyFile.ImmediateFlush=true
# Append:true表示消息增长到指定文件中,false则将消息覆盖指定的文件内容,默认值是true#
log4j.appender.dailyFile.Append=true
# File:指定消息输出到logging.log4j文件中。#
log4j.appender.dailyFile.File=D:/logs/log.log4j
# DatePattern='.'yyyy-MM:每个月滚动一第二天志文件,即每个月产生一个新的日志文件。   # 
#   当前月的日志文件名为logging.log4j,前#   一个月的日志文件名为logging.log4j.yyyy-MM。   # 
#   另外,也能够指定按周、天、时、分等来滚动日志文件,对应的格式以下:   # 
#   1)'.'yyyy-MM:每个月   # 
#   2)'.'yyyy-ww:每周   # 
#   3)'.'yyyy-MM-dd:天天   # 
#   4)'.'yyyy-MM-dd-a:天天两次   # 
#   5)'.'yyyy-MM-dd-HH:每小时   # 
#   6)'.'yyyy-MM-dd-HH-mm:每分钟   #   
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
#layout
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

文件大小到达指定尺寸的时候产生一个新的文件api

# 回滚文件(rollingFile)#
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
# Threshold:指定日志信息的最低输出级别,默认为DEBUG
log4j.appender.rollingFile.Threshold=DEBUG
# ImmediateFlush:表示全部消息都会被当即输出,设为false则不输出,默认值是true。
log4j.appender.rollingFile.ImmediateFlush=true
# Append:true表示消息增长到指定文件中,false则将消息覆盖指定的文件内容,默认值是true
log4j.appender.rollingFile.Append=true
# File:指定消息输出到logging.log4j文件中
log4j.appender.rollingFile.File=D:/logs/log.log4j
# MaxFileSize:后缀能够是KB, MB 或者GB。
# 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中
log4j.appender.rollingFile.MaxFileSize=200KB
# 指定能够产生的滚动文件的最大数,例如,设为2则能够产生
log4j.appender.rollingFile.MaxBackupIndex=50
#layout
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

将日志信息以流格式发送到任意指定的地方bash

Layout 输出格式

(1)org.apache.log4j.PatternLayout(能够灵活地指定布局模式)选项:
    ConversionPattern=%m%n:设定以怎样的格式显示消息多线程

格式化符号说明:

%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也能够在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:输出自应用程序启动到输出该log信息耗费的毫秒数。
%t:输出产生该日志事件的线程名。
%l:输出日志事件的发生位置,至关于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。
   例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:输出日志信息所属的类目,一般就是所在类的全名。
%M:输出产生日志信息的方法名。
%F:输出日志消息产生时所在的文件名称。
%L::输出代码中的行号。
%m::输出代码中指定的具体日志信息。
%n:输出一个回车换行符,Windows平台为"rn",Unix平台为"n"。
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤为用到像java servlets这样的多客户多线程的应用中。
%%:输出一个"%"字符。
另外,还能够在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
1) c:指定输出category的名称,最小的长度是20,若是category的名称长度小于20的话,默认的状况下右对齐。
2)%-20c:"-"号表示左对齐。
3)%.30c:指定输出category的名称,最大的长度是30,若是category的名称长度大于30的话,就会将左边多出的字符截掉,
    但小于30的话也不会补空格。

(2)org.apache.log4j.HTMLLayout(以HTML表格形式布局)选项:
    LocationInfo=true:输出java文件名称和行号,默认值是false。
    Title=My Logging: 默认值是Log4J Log Messages。app

(3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
(4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)布局

4.例子

# Output pattern : date [thread] priority category - message   FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 
log4j.rootLogger=INFO, Console, RollingFile

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] [%X{SEQ}] %l %m%n

#RollingFile
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=logs/ams.balance.log
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [ %p ] [%X{SEQ}] %l %m%n

# SQL \u6253\u5370
log4j.logger.com.jf.ams.bankpage.dao=DEBUG
log4j.logger.com.springframework=DEBUG
log4j.logger.com.ibatis=DEBUG  
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG  
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG  
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG  
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl=DEBUG
<!-- log4j 配置 开始 -->
<context-param>
    <param-name> log4jConfigLocation </param-name >
    <param-value> /WEB-INF/classes/log4j.properties </param-value >
</context-param>
 <context-param>
    <param-name> log4jRefreshInterval </param-name >
    <param-value> 600000 </param-value >
</context-param>

5.参考

http://www.javashuo.com/article/p-vmwninhj-gg.html

http://blog.csdn.net/evankaka/article/details/45815047

相关文章
相关标签/搜索