- 浏览: 6847 次
- 性别:
- 来自: 杭州
文章分类
最新评论
1. log4j 的配置文件
Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。
1.1. log4j configuration scripts in properties format
lg4j.properties 文件作为作为常用的配置文件的方法如下:
Ø 配置根 Logger
Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。 Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。 ALL: 打印所有的日志, OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
Ø Appender
配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN
其中, Log4j 提供的 appender 有以下几种:
org.apache.log4j.ConsoleAppender (控制台),
org.apache.log4j.FileAppender (文件),
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
例:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义一个名为 stdout 的输出目的地, ConsoleAppender 为控制台。
Ø Layout
其中, Log4j 提供的 layout 有以下几种:
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
Ø 格式化日志信息
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
log4j.propertie 示例文件:
log4j.rootCategory=INFO, stdout,file
###. 定义名为 stdout 的输出端的类型
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
###. 定义名为 file 的输出端的类型为每天产生一个日志文件。
log4j.appender.file =org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=log.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
###. 指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。
log4j.logger.com.neusoft=DEBUG
###. 如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
### struts 配置
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
### displaytag 配置
log4j.logger.org.displaytag=ERROR
### .spring 配置
log4j.logger.org.springframework=DEBUG
### . ibatis 配置
log4j.logger.com.ibatis.db=WARN
### . hibernate 配置
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
1.2. log4j configuration scripts in XML format
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
<!-- 设置通道 ID:org.zblog.all 和输出方式: org.apache.log4j.RollingFileAppender -->
<param name="File" value="all.output.log" />
<!-- 设置 File 参数:日志输出文件名 -->
<param name="Append" value="false" />
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
<!-- 设置输出文件项目和格式 -->
</layout>
</appender>
<appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="output.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="10240" />
<!-- 设置文件大小 -->
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>
<logger name="zcw.log">
<!-- 设置域名限制,即 zcw.log 域及以下的日志均输出到下面对应的通道中 -->
<level value="debug" />
<!-- 设置级别 -->
<appender-ref ref="org.zblog.zcw" />
<!-- 与前面的通道 id 相对应 -->
</logger>
<root>
<!-- 设置接收所有输出的通道 -->
<appender-ref ref="org.zblog.all" />
<!-- 与前面的通道 id 相对应 -->
</root>
</log4j:configuration>
2. log4j in java
2.1. commongs-logging+Log4j
Ø 导入所有需的 commongs-logging 类:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Ø 获取日志记录器
在自己的类中定义一个 org.apache.commons.logging.Log 类的私有静态类成员:
private final Log log = LogFactory.getLog(getClass());
LogFactory.getLog() 方法的参数使用的是当前类的 class 。
Ø 输出日志信息
使用 org.apache.commons.logging.Log 类的成员方法输出日志信息:
if (log.isDebugEnabled()) {
log.debug("debug…");
}
if (log.isInfoEnabled()){
log.info("Info…");
}
if (log.isWarnEnabled()){
log.warn("warn …");
}
if (log.isErrorEnabled()){
log.error("error …");
}
if (log.isFatalEnabled()){
log.fatal("fatal …")
}
2.2. 单独使用 Log4j
Ø 获取日志记录器
得到记录器使用 Log4j ,这个记录器将负责控制日志信息。其语法为:
public static Logger getLogger( String name)
通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。 Name 一般取本类的名字,比如:
static Logger logger = Logger.getLogger (Test.class.getName () )
Ø 读取配置文件
当获得了日志记录器之后,第二步将配置 Log4j 环境,其语法为:
BasicConfigurator.configure () : 自动快速地使用缺省 Log4j 环境。
PropertyConfigurator.configure(String configFilename) :读取使用 Java 的特性文件编写的配置文件。
例: PropertyConfigurator.configure(".\\src\\log4j.properties"), 若将 log4j.properties 放在工程根目录下也可不写此句,程序会自动找到配置文件。
DOMConfigurator.configure ( String filename ) :读取 XML 形式的配置文件。
Ø 输出日志信息
当上两个必要步骤执行完毕,就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
log4j 范例程序
下面将使用一个最简单的范例程序来进一步说明 log4j 的使用方法。程序代码如下:
import org.apache.log4j.*;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class LogTest {
static Logger logger = Logger.getLogger(LogTest.class.getName());
public static void main(String[] args) {
PropertyConfigurator.configure ( “.\\src\log4j.properties”) ;
//DOMConfigurator.configure(".\\src\log4j.xml");// 加载 .xml 文件
logger.debug("Debug ...");
logger.info("Info ...");
logger.warn("Warn ...");
logger.error("Error ...");
}
}
3. log4j in database
3.1. 数据库配置
Ø 导入所需的驱动包
无论使用哪种数据库都需要将驱动包导入服务中。
Ø 创建所需的表
首先要保证你的数据库中有 log 表,并且保正字段的长度,否则写入日志时操作会失败
数据字典说明:
CREATE TABLE LOG (
ID INTEGER NOT NULL PRIMARY KEY,
LOGDATE DATE,
LOGTIME TIME,
LOGTHREAD VARCHAR(50),
LOGLEVEL VARCHAR(50),
LOGCLASS VARCHAR(50),
LOGLOGGER VARCHAR(200),
LOGMESSAGE VARCHAR(2000)
)
GO
3.2. log4j 配置文件
## 配置数据库联接
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:db2://127.0.0.1:50000/pbdb
log4j.appender.DATABASE.driver=com.ibm.db2.jcc.DB2Driver
log4j.appender.DATABASE.user=erpt1104
log4j.appender.DATABASE.password=erpt1104
log4j.appender.DATABASE.sql = INSERT INTO log (logDATE,logTIME,LOGThread,loglevel,logClass,logLogger,logMessage) values ('%d{yyyy-MM-dd}','%d{HH:mm:ss}','%t', '%p', '%c', '%l', '%m')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern = %d{yyyy MM dd HH:mm:ss,SSS} %-5p %t %c %m
说明:
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy-MM-dd HH:mm:ss} ,输出类似: 2007-3-29 17:49:27 ,刚好适合插入 SQLServer ;
%t 产生该日志事件的线程名;
%p 日志的 log_level ,如 DEBUG 、 WARN 或者 INFO ;
%c 输出所属的类目,通常就是所在类的全名,如“ iNotes.Default ”;
%m 日志的内容;
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如 Test.main(Test.java:33) ;
%n 输出一个回车换行符, Windows 平台为“ \r\n ”, Unix 平台为“ \n ”
3.3. java 中调用
import sun.jdbc.odbc.*;
import java.sql.*;
import org.apache.log4j.Category;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.jdbc.*;
static Logger logger = Logger.getLogger(Test.class.getName ());
PropertyConfigurator.configure ( "log.properties" ) ;
logger.info ( "test" );
运行项目,你就会看到执行了 sql 语句,数据库中便插入相关数据,如需对日志进行分析整理,这就不是 log4j 的事情了。
4. 最后说明:
Doc 文档可以从其网站上下载:
http://logging.apache.org/log4j/docs/api/index.html
http://logging.apache.org/log4j/docs/documentation.html
关于 eclipse 的 log4j的插件log4e 可以去他的官方网站上下载:http://log4e.jayefem.de/index.php/Download
1. log4j 配置文件解读
log4j 支持两种配置方式 xml和properties
log4j 三个主要组件 Loggers Appenders Layouts 对应日志类别、日志的输出、日志输出格式
Logger:
debug info warn error fatal五个级别
example:
root4j.rootLogger=info
Appender:
org.apache.log4j.ConsoleAppender org.apache.log4j.FileAppender org.apache.log4j.DailyRollingFileAppender
org.apache.log4j.RollingFileAppender org.apache.log4j.WriteAppender--日志信息以流的形式发送到任何指定的地方
format:
log4j.appender.appenderName=fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1=value1 …..
example: ConsoleAppender FileAppender DBAppender
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct log messages to file mip.log ###
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=../webapps/SgccMsgCenter/log/SgccMsgCenter.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
### direct messages to db ###
log4j.appender.db=com.ibm.eip.finance.log.DBAppender
log4j.appender.db.bufferSize=1
Layout: org.apache.log4j.HTMLLayout/PatternLayout/SimpleLayout/TTCCLayout
pattern的一些配置参数
%m 输出代码中指定的消息
%p 输出优先级 即debug info warn error
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目 通常是类所在的全名
%t 输出产生该日志时间的线程名
%n 输出一个回车换行符 win \r\n unix \n
%d 输出日志点的时间格式
%l 输出日志事件的发生位置
关于Log4j的配置一般是在配置文件进行,当然在代码中也可以进行代码级别的配置
Logger logger=Logger.getLogger("logger name");
logger.setLevel(Level.INFO);
logger.warn("warn information");
// 配置的读取
BasicConfigurator.configure(); //使用默认配置
PropertyConfigurator.configure(String configureFileName); // property文件配置
or DOMConfigurator.configure(String fileName); // XML配置
Log4j 中 struts hibernate的日志配置
Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。
1.1. log4j configuration scripts in properties format
lg4j.properties 文件作为作为常用的配置文件的方法如下:
Ø 配置根 Logger
Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。 Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。 ALL: 打印所有的日志, OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
Ø Appender
配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN
其中, Log4j 提供的 appender 有以下几种:
org.apache.log4j.ConsoleAppender (控制台),
org.apache.log4j.FileAppender (文件),
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
例:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义一个名为 stdout 的输出目的地, ConsoleAppender 为控制台。
Ø Layout
其中, Log4j 提供的 layout 有以下几种:
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
Ø 格式化日志信息
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
log4j.propertie 示例文件:
log4j.rootCategory=INFO, stdout,file
###. 定义名为 stdout 的输出端的类型
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
###. 定义名为 file 的输出端的类型为每天产生一个日志文件。
log4j.appender.file =org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=log.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
###. 指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。
log4j.logger.com.neusoft=DEBUG
###. 如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
### struts 配置
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
### displaytag 配置
log4j.logger.org.displaytag=ERROR
### .spring 配置
log4j.logger.org.springframework=DEBUG
### . ibatis 配置
log4j.logger.com.ibatis.db=WARN
### . hibernate 配置
log4j.logger.org.hibernate=DEBUG
log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN
1.2. log4j configuration scripts in XML format
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
<!-- 设置通道 ID:org.zblog.all 和输出方式: org.apache.log4j.RollingFileAppender -->
<param name="File" value="all.output.log" />
<!-- 设置 File 参数:日志输出文件名 -->
<param name="Append" value="false" />
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
<!-- 设置输出文件项目和格式 -->
</layout>
</appender>
<appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="output.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="10240" />
<!-- 设置文件大小 -->
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>
<logger name="zcw.log">
<!-- 设置域名限制,即 zcw.log 域及以下的日志均输出到下面对应的通道中 -->
<level value="debug" />
<!-- 设置级别 -->
<appender-ref ref="org.zblog.zcw" />
<!-- 与前面的通道 id 相对应 -->
</logger>
<root>
<!-- 设置接收所有输出的通道 -->
<appender-ref ref="org.zblog.all" />
<!-- 与前面的通道 id 相对应 -->
</root>
</log4j:configuration>
2. log4j in java
2.1. commongs-logging+Log4j
Ø 导入所有需的 commongs-logging 类:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Ø 获取日志记录器
在自己的类中定义一个 org.apache.commons.logging.Log 类的私有静态类成员:
private final Log log = LogFactory.getLog(getClass());
LogFactory.getLog() 方法的参数使用的是当前类的 class 。
Ø 输出日志信息
使用 org.apache.commons.logging.Log 类的成员方法输出日志信息:
if (log.isDebugEnabled()) {
log.debug("debug…");
}
if (log.isInfoEnabled()){
log.info("Info…");
}
if (log.isWarnEnabled()){
log.warn("warn …");
}
if (log.isErrorEnabled()){
log.error("error …");
}
if (log.isFatalEnabled()){
log.fatal("fatal …")
}
2.2. 单独使用 Log4j
Ø 获取日志记录器
得到记录器使用 Log4j ,这个记录器将负责控制日志信息。其语法为:
public static Logger getLogger( String name)
通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。 Name 一般取本类的名字,比如:
static Logger logger = Logger.getLogger (Test.class.getName () )
Ø 读取配置文件
当获得了日志记录器之后,第二步将配置 Log4j 环境,其语法为:
BasicConfigurator.configure () : 自动快速地使用缺省 Log4j 环境。
PropertyConfigurator.configure(String configFilename) :读取使用 Java 的特性文件编写的配置文件。
例: PropertyConfigurator.configure(".\\src\\log4j.properties"), 若将 log4j.properties 放在工程根目录下也可不写此句,程序会自动找到配置文件。
DOMConfigurator.configure ( String filename ) :读取 XML 形式的配置文件。
Ø 输出日志信息
当上两个必要步骤执行完毕,就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
log4j 范例程序
下面将使用一个最简单的范例程序来进一步说明 log4j 的使用方法。程序代码如下:
import org.apache.log4j.*;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class LogTest {
static Logger logger = Logger.getLogger(LogTest.class.getName());
public static void main(String[] args) {
PropertyConfigurator.configure ( “.\\src\log4j.properties”) ;
//DOMConfigurator.configure(".\\src\log4j.xml");// 加载 .xml 文件
logger.debug("Debug ...");
logger.info("Info ...");
logger.warn("Warn ...");
logger.error("Error ...");
}
}
3. log4j in database
3.1. 数据库配置
Ø 导入所需的驱动包
无论使用哪种数据库都需要将驱动包导入服务中。
Ø 创建所需的表
首先要保证你的数据库中有 log 表,并且保正字段的长度,否则写入日志时操作会失败
数据字典说明:
CREATE TABLE LOG (
ID INTEGER NOT NULL PRIMARY KEY,
LOGDATE DATE,
LOGTIME TIME,
LOGTHREAD VARCHAR(50),
LOGLEVEL VARCHAR(50),
LOGCLASS VARCHAR(50),
LOGLOGGER VARCHAR(200),
LOGMESSAGE VARCHAR(2000)
)
GO
3.2. log4j 配置文件
## 配置数据库联接
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:db2://127.0.0.1:50000/pbdb
log4j.appender.DATABASE.driver=com.ibm.db2.jcc.DB2Driver
log4j.appender.DATABASE.user=erpt1104
log4j.appender.DATABASE.password=erpt1104
log4j.appender.DATABASE.sql = INSERT INTO log (logDATE,logTIME,LOGThread,loglevel,logClass,logLogger,logMessage) values ('%d{yyyy-MM-dd}','%d{HH:mm:ss}','%t', '%p', '%c', '%l', '%m')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern = %d{yyyy MM dd HH:mm:ss,SSS} %-5p %t %c %m
说明:
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy-MM-dd HH:mm:ss} ,输出类似: 2007-3-29 17:49:27 ,刚好适合插入 SQLServer ;
%t 产生该日志事件的线程名;
%p 日志的 log_level ,如 DEBUG 、 WARN 或者 INFO ;
%c 输出所属的类目,通常就是所在类的全名,如“ iNotes.Default ”;
%m 日志的内容;
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如 Test.main(Test.java:33) ;
%n 输出一个回车换行符, Windows 平台为“ \r\n ”, Unix 平台为“ \n ”
3.3. java 中调用
import sun.jdbc.odbc.*;
import java.sql.*;
import org.apache.log4j.Category;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.jdbc.*;
static Logger logger = Logger.getLogger(Test.class.getName ());
PropertyConfigurator.configure ( "log.properties" ) ;
logger.info ( "test" );
运行项目,你就会看到执行了 sql 语句,数据库中便插入相关数据,如需对日志进行分析整理,这就不是 log4j 的事情了。
4. 最后说明:
Doc 文档可以从其网站上下载:
http://logging.apache.org/log4j/docs/api/index.html
http://logging.apache.org/log4j/docs/documentation.html
关于 eclipse 的 log4j的插件log4e 可以去他的官方网站上下载:http://log4e.jayefem.de/index.php/Download
1. log4j 配置文件解读
log4j 支持两种配置方式 xml和properties
log4j 三个主要组件 Loggers Appenders Layouts 对应日志类别、日志的输出、日志输出格式
Logger:
debug info warn error fatal五个级别
example:
root4j.rootLogger=info
Appender:
org.apache.log4j.ConsoleAppender org.apache.log4j.FileAppender org.apache.log4j.DailyRollingFileAppender
org.apache.log4j.RollingFileAppender org.apache.log4j.WriteAppender--日志信息以流的形式发送到任何指定的地方
format:
log4j.appender.appenderName=fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1=value1 …..
example: ConsoleAppender FileAppender DBAppender
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct log messages to file mip.log ###
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=../webapps/SgccMsgCenter/log/SgccMsgCenter.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
### direct messages to db ###
log4j.appender.db=com.ibm.eip.finance.log.DBAppender
log4j.appender.db.bufferSize=1
Layout: org.apache.log4j.HTMLLayout/PatternLayout/SimpleLayout/TTCCLayout
pattern的一些配置参数
%m 输出代码中指定的消息
%p 输出优先级 即debug info warn error
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目 通常是类所在的全名
%t 输出产生该日志时间的线程名
%n 输出一个回车换行符 win \r\n unix \n
%d 输出日志点的时间格式
%l 输出日志事件的发生位置
关于Log4j的配置一般是在配置文件进行,当然在代码中也可以进行代码级别的配置
Logger logger=Logger.getLogger("logger name");
logger.setLevel(Level.INFO);
logger.warn("warn information");
// 配置的读取
BasicConfigurator.configure(); //使用默认配置
PropertyConfigurator.configure(String configureFileName); // property文件配置
or DOMConfigurator.configure(String fileName); // XML配置
Log4j 中 struts hibernate的日志配置
相关推荐
基于微信小程序的在线办公小程序答辩PPT.pptx
这个数据集来自世界卫生组织(WHO),包含了2000年至2015年期间193个国家的预期寿命和相关健康因素的数据。它提供了一个全面的视角,用于分析影响全球人口预期寿命的多种因素。数据集涵盖了从婴儿死亡率、GDP、BMI到免疫接种覆盖率等多个维度,为研究者提供了丰富的信息来探索和预测预期寿命。 该数据集的特点在于其跨国家的比较性,使得研究者能够识别出不同国家之间预期寿命的差异,并分析这些差异背后的原因。数据集包含22个特征列和2938行数据,涉及的变量被分为几个大类:免疫相关因素、死亡因素、经济因素和社会因素。这些数据不仅有助于了解全球健康趋势,还可以辅助制定公共卫生政策和社会福利计划。 数据集的处理包括对缺失值的处理、数据类型转换以及去重等步骤,以确保数据的准确性和可靠性。研究者可以使用这个数据集来探索如教育、健康习惯、生活方式等因素如何影响人们的寿命,以及不同国家的经济发展水平如何与预期寿命相关联。此外,数据集还可以用于预测模型的构建,通过回归分析等统计方法来预测预期寿命。 总的来说,这个数据集是研究全球健康和预期寿命变化的宝贵资源,它不仅提供了历史数据,还为未来的研究和政策制
基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx
基于微信小程序的电影交流平台答辩PPT.pptx
计算机字符编码GB18030
Hive 操作基础(进阶版)多级分区数据文件2
基于java的贫困生管理系统答辩PPT.pptx
pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。
TA_lib库(whl轮子),直接pip install安装即可,下载即用,非常方便,各个python版本对应的都有。 使用方法: 1、下载下来解压; 2、确保有python环境,命令行进入终端,cd到whl存放的目录,直接输入pip install TA_lib-xxxx.whl就可以安装,等待安装成功,即可使用! 优点:无需C++环境编译,下载即用,方便
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
tornado-6.2b2.tar.gz
javawe论坛项目 原生技术
tornado-6.2b1-cp310-cp310-macosx_10_9_universal2.whl
随着物流行业的快速发展,货运管理变得愈发重要。为了提高货运效率,确保货物安全,我们开发了这款基于司机信用评价的货运管理系统。 该系统主要包含了货物信息管理、订单评价管理、货主管理等多个功能模块。在货物信息管理模块中,用户可以查看和管理货物的详细信息,包括货物名称、规格、装车状态、运输状态以及卸货状态等,方便用户随时掌握货物的动态。 订单评价管理模块是该系统的核心之一,它允许货主对司机的服务进行评价,系统会根据评价数据对司机进行信用评分。这一功能不仅有助于提升司机的服务质量,还能为货主提供更加可靠的货运选择。 此外,货主管理模块提供了货主信息的录入、修改和查询等功能,方便用户管理自己的货主资料。系统界面简洁明了,以蓝色为主色调,设计现代且专业,为用户提供了良好的使用体验。 通过该系统,用户可以轻松实现货物信息的查看和管理,对司机的服务进行评价,提高货运效率和服务质量。同时,系统也为司机提供了一个展示自我、提升信用的平台,有助于推动物流行业的健康发展。
毕业生交流学习平台 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
基于java的广场舞团答辩PPT.pptx
基于java的基于SSM的校园音乐平台答辩PPT.pptx
Jira插件安装包
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-6.2b2-cp37-abi3-win_amd64.whl