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/​​​