hibernate 使用的日志是slf4j,而 slf4j又有各种实现策略。
使用log4j 就是其中一种方式。
需要的jar 包:
log4j-1.2.16.jar |
slf4j-api-1.6.1.jar |
slf4j-log4j12-1.6.1.jar
配置文件放在 src 根目录下,配置文件名称是log4j.properties 范例:
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} %7p %c:%L - %m%n log4j.rootLogger=warn, stdout log4j.logger.org.hibernate.SQL=debug log4j.logger.org.hibernate.jdbc=info
在类中的用法: private static Logger logger = Logger.getLogger(AddServlet.class);
logger.debug("debug info"); logger.info("info info"); logger.warn("warning info"); logger.error("error info"); logger.fatal("fatal info");
详细解说:
level 依次是off,fatal,error,warn,info,debug,all DEBUG < INFO < WARN < ERROR < FATAL.
|
d | 日期时间 |
|
c | 类名 |
|
n | 换行,即回车 |
|
m | 具体的info |
|
L | 行号 |
|
p | 优先级 |
http://blog.sina.com.cn/s/blog_647a022e01013zgy.html
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
http://xq0804200134.iteye.com/blog/1806244
- org.apache.log4j.PatternLayout (最灵活的格式化方式,可以用以下的各项进行组合配置:
%c logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间。
%C 调用logger的类的全名(包含包路径)。
%d 日志记录时间,{<日期格式>}使用ISO8601定义的日期格式。
%F 调用logger的源文件名。
%l 日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
%L 调用logger的代码行
%m 输出消息。
%M 调用logger的方法名。
%n 当前平台下的换行符。
%p 该条日志的优先级。
%r 从程序启动时到记录该条日志时已经经过的毫秒数。
%t 产生该日志事件的线程名。
%x 按NDC(Nested Diagnostic Context,线程堆栈)顺序输出日志。
%X 按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。
%% 显示一个百分号。) http://aofengblog.blog.163.com/blog/static/631702120114295537239/