hibernate 中运用log4j常用配置
hibernate 中使用log4j常用配置
### 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:%L - %m%n ### direct messages to file hibernate.log 生成单个日志文件 ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=hibernate.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file hibernate.html 按天生成html文件 ### log4j.appender.html=org.apache.log4j.DailyRollingFileAppender #log4j.appender.html.Threshold=FATAL log4j.appender.html.File=hibernate.html log4j.appender.html.Append=true log4j.appender.html.ImmediateFlush=true log4j.appender.html.DatePattern='.'yyyy-MM-dd'.html' log4j.appender.html.layout=com.fxz.log4j.FormatHTMLLayout ### direct messages to mysql 插入到mysql ### log4j.appender.MYSQL=org.apache.log4j.jdbc.JDBCAppender log4j.appender.MYSQL.URL=jdbc:mysql://localhost:3306/hibernate log4j.appender.MYSQL.driver=com.mysql.jdbc.Driver log4j.appender.MYSQL.user=fxz log4j.appender.MYSQL.password=fxz log4j.appender.MYSQL.sql=INSERT INTO LOG4J (N_RZLSH,V_CLASSNAME,V_METHODNAME,V_SQL,D_DATE) VALUES (NULL,'%C','%M','[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n','%d{yyyy-MM-dd HH\:mm\:ss}') log4j.appender.MYSQL.layout=org.apache.log4j.PatternLayout log4j.appender.MYSQL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ### direct messages to ORACLE 插入到oracle ### log4j.appender.oracle=org.apache.log4j.jdbc.JDBCAppender #log4j.appender.JDBC=com.surfilter.bt.util.Log4jToDBAppender log4j.appender.JDBC.Threshold=DEBUG log4j.appender.oracle.URL=jdbc:oracle:thin:@127.0.0.1:1521:YZ log4j.appender.oracle.driver=oracle.jdbc.driver.OracleDriver log4j.appender.oracle.user=fxz log4j.appender.oracle.password=fxz log4j.appender.oracle.sql=insert into SYS_LOG(N_RZLSH,V_LOGINID,V_PRIORITY,V_CLASSNAME,V_METHODNAME,V_MSG,D_LOGDATE) values (seq_t_log.nextval,'0','%p','%c{1}','%-10.50l','%m',sysdate) log4j.appender.oracle.layout=org.apache.log4j.PatternLayout ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=warn, stdout,file,oracle,html #log4j.logger.org.hibernate=info #log4j.logger.org.hibernate=debug ### log HQL query parser activity #log4j.logger.org.hibernate.hql.ast.AST=debug ### log just the SQL log4j.logger.org.hibernate.SQL=debug ### log JDBC bind parameters ### #log4j.logger.org.hibernate.type=info #log4j.logger.org.hibernate.type=debug ### log schema export/update ### log4j.logger.org.hibernate.tool.hbm2ddl=debug ### log HQL parse trees #log4j.logger.org.hibernate.hql=debug ### log cache activity ### #log4j.logger.org.hibernate.cache=debug ### log transaction activity #log4j.logger.org.hibernate.transaction=debug ### log JDBC resource acquisition #log4j.logger.org.hibernate.jdbc=debug ### enable the following line if you want to track down connection ### ### leakages when using DriverManagerConnectionProvider ### #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
### FATAL (致命错误) 0 只有他自己
### ERROR(错误1) 3 包含错误(ERROR)、致命错误(FATAL)
### WARN (警告) 4 包含警告(WARN)、错误(ERROR)、致命错误(FATAL)
### INFO (信息) 6 包含信息(INFO)、警告(WARN)、错误(ERROR)、致命错误(FATAL)
### DEBUG(调试) 7 包含调试(DEBUG)、信息(INFO)、警告(WARN)、错误(ERROR)、致命错误(FATAL)
生成到html需要自己写个布局类,以下是网络上的资源
package com.fxz.log4j;
import java.text.SimpleDateFormat; import org.apache.log4j.HTMLLayout; import org.apache.log4j.Layout; import org.apache.log4j.Level; import org.apache.log4j.helpers.Transform; import org.apache.log4j.spi.LocationInfo; import org.apache.log4j.spi.LoggingEvent; public class FormatHTMLLayout extends HTMLLayout { public FormatHTMLLayout() { } protected final int BUF_SIZE = 256; protected final int MAX_CAPACITY = 1024; static String TRACE_PREFIX = "<br> "; // output buffer appended to when format() is invoked private StringBuffer sbuf = new StringBuffer(BUF_SIZE); String title="系统操作日志"; /** * A string constant used in naming the option for setting the the HTML * document title. Current value of this string constant is <b>Title</b>. */ public static final String TITLE_OPTION = "Title"; // Print no location info by default boolean locationInfo = true; public String format(LoggingEvent event) { if (sbuf.capacity() > MAX_CAPACITY) { sbuf = new StringBuffer(BUF_SIZE); } else { sbuf.setLength(0); } sbuf.append(Layout.LINE_SEP + "<tr>" + Layout.LINE_SEP); /* sbuf.append("<td>"); sbuf.append(String.valueOf(i)); sbuf.append("</td>" + Layout.LINE_SEP); */ sbuf.append("<td>"); sbuf.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date())); sbuf.append("</td>" + Layout.LINE_SEP); /* String escapedThread = Transform.escapeTags(event.getThreadName()); sbuf.append("<td title=\"" + escapedThread + " thread\">"); sbuf.append(escapedThread); sbuf.append("</td>" + Layout.LINE_SEP); */ sbuf.append("<td title=\"级别\">"); if (event.getLevel().equals(Level.FATAL)) { sbuf.append("<font color=\"#339933\">"); sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel()))); sbuf.append("</font>"); } else if (event.getLevel().isGreaterOrEqual(Level.WARN)) { sbuf.append("<font color=\"#993300\"><strong>"); sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel()))); sbuf.append("</strong></font>"); } else { sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel()))); } sbuf.append("</td>" + Layout.LINE_SEP); /* String escapedLogger = Transform.escapeTags(event.getLoggerName().substring(event.getLoggerName().lastIndexOf("."))); sbuf.append("<td title=\"类名\">"); sbuf.append(escapedLogger); sbuf.append("</td>" + Layout.LINE_SEP); */ if (locationInfo) { LocationInfo locInfo = event.getLocationInformation(); sbuf.append("<td title=\"行号\">"); sbuf.append(Transform.escapeTags(locInfo.getFileName())); sbuf.append(':'); sbuf.append(locInfo.getLineNumber()); sbuf.append("</td>" + Layout.LINE_SEP); } /*Map session = ActionContext.getContext().getSession(); if(session!=null){ User user = (User) session.get(Constants.USER_IN_SESSION); sbuf.append("<td>"+user.getName()+"</td>"); }else{ sbuf.append("<td> </td>"); }*/ sbuf.append("<td>方小洲</td>"); sbuf.append("<td title=\"日志信息\">"); sbuf.append(Transform.escapeTags(event.getRenderedMessage())); sbuf.append("</td>" + Layout.LINE_SEP); sbuf.append("</tr>" + Layout.LINE_SEP); if (event.getNDC() != null) { sbuf.append("<tr><td bgcolor=\"#EEEEEE\" style=\"font-size : xx-small;\" colspan=\"6\" title=\"Nested Diagnostic Context\">"); sbuf.append("NDC: " + Transform.escapeTags(event.getNDC())); sbuf.append("</td></tr>" + Layout.LINE_SEP); } String[] s = event.getThrowableStrRep(); if (s != null) { sbuf.append("<tr><td bgcolor=\"#993300\" style=\"color:White; font-size : xx-small;\" colspan=\"4\">"); appendThrowableAsHTML(s, sbuf); sbuf.append("</td></tr>" + Layout.LINE_SEP); } return sbuf.toString(); } private void appendThrowableAsHTML(String[] s, StringBuffer sbuf) { if (s != null) { int len = s.length; if (len == 0) return; sbuf.append(Transform.escapeTags(s[0])); sbuf.append(Layout.LINE_SEP); for (int i = 1; i < len; i++) { sbuf.append(TRACE_PREFIX); sbuf.append(Transform.escapeTags(s[i])); sbuf.append(Layout.LINE_SEP); } } } /** * Returns appropriate HTML headers. */ public String getHeader() { StringBuffer sbuf = new StringBuffer(); sbuf.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" + Layout.LINE_SEP); sbuf.append("<html>" + Layout.LINE_SEP); sbuf.append("<head>" + Layout.LINE_SEP); // sbuf.append("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">"); sbuf.append("<title>" + title + "</title>" + Layout.LINE_SEP); sbuf.append("<style type=\"text/css\">" + Layout.LINE_SEP); sbuf.append("<!--" + Layout.LINE_SEP); sbuf.append("body, table {font-family: '宋体',arial,sans-serif; font-size: 12px;}" + Layout.LINE_SEP); sbuf.append("th {background: #336699; color: #FFFFFF; text-align: left;}" + Layout.LINE_SEP); sbuf.append("-->" + Layout.LINE_SEP); sbuf.append("</style>" + Layout.LINE_SEP); sbuf.append("</head>" + Layout.LINE_SEP); sbuf.append("<body bgcolor=\"#FFFFFF\" topmargin=\"6\" leftmargin=\"6\">" + Layout.LINE_SEP); // sbuf.append("<hr size=\"1\" noshade>" + Layout.LINE_SEP); // sbuf.append("Log session start time " + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new java.util.Date()) + "<br>" + Layout.LINE_SEP); // sbuf.append("<p>" + Layout.LINE_SEP); sbuf.append("<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\" bordercolor=\"#224466\" width=\"100%\">" + Layout.LINE_SEP); sbuf.append("<tr>" + Layout.LINE_SEP); // sbuf.append("<th>序列</th>" + Layout.LINE_SEP); sbuf.append("<th>执行时间</th>" + Layout.LINE_SEP); sbuf.append("<th>级别</th>" + Layout.LINE_SEP); // sbuf.append("<th>所在类</th>" + Layout.LINE_SEP); if (locationInfo) { sbuf.append("<th>所在行</th>" + Layout.LINE_SEP); } sbuf.append("<th>操作人</th>"); sbuf.append("<th>信息</th>" + Layout.LINE_SEP); sbuf.append("</tr>" + Layout.LINE_SEP); sbuf.append("<br></br>" + Layout.LINE_SEP); return sbuf.toString(); } }