### 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();
}
}
分享到:
相关推荐
在Java开发领域,Hibernate、SLF4J、Log4j以及JUnit是四个非常重要的库,它们各自服务于不同的目的,但又常被一起使用以构建高效、可维护的项目。让我们来详细了解一下这些技术和它们在软件开发中的作用。 1. ...
接下来,通过配置Hibernate的`hibernate.cfg.xml`,设置日志适配器为SLF4J: ```xml <property name="hibernate.show_sql">true <property name="hibernate.format_sql">true <property name="hibernate.use_sql_...
这里我们关注的是基于Java技术栈的Web应用环境,具体包括Hibernate4、SpringMVC、JUnit4和log4j这四个核心组件。下面将详细介绍这些组件以及如何整合它们进行环境搭建。 **1. Hibernate4** Hibernate是一个开源的...
Struts、Spring、Hibernate、Log4j和Dom4j是Java开发中常用的一系列框架和技术,它们在构建大型企业级应用时发挥着至关重要的作用。接下来,我们将详细探讨这些技术的核心概念、功能以及它们如何协同工作。 1. ...
6. **在代码中使用**:最后,你需要在Java代码中导入`log4j`的API,然后使用`Logger`类来记录日志信息。 通过本教程,你将学会如何在SSH、Maven和Bootstrap项目中配置`log4j.properties`,实现有效的日志记录和管理...
在标题“spring jar 包 _ log4j-1.2.17.jar_commons-logging.jar”中,提到了两个重要的库文件:log4j-1.2.17.jar和commons-logging.jar,它们都是Spring框架常用的日志处理工具。现在,我们将深入探讨这两个库以及...
2. **Struts2整合Log4j**:在Struts2应用中,可以通过配置struts.xml或使用filter来初始化Log4j,确保每个Action类都能获取到日志实例,便于跟踪请求处理过程。 3. **Hibernate与Log4j**:Hibernate的配置文件...
SLF4J(Simple Logging Facade for Java)和Log4j是Java开发中常用的日志处理框架,它们在构建SSH(Struts、Spring、Hibernate)和MVC(Model-View-Controller)架构的Web应用程序时扮演着至关重要的角色。...
Java日志框架Log4j是Java开发者非常常用的一个工具,尤其在处理系统日志记录时。Log4j的强大之处在于它的灵活性、可配置性和高效性,使得开发人员能够精确地控制日志信息的生成,同时提供了多种日志级别,便于调试和...
7. **logging**: Hibernate 使用日志框架,如 SLF4J 或 Log4j,用于记录应用程序的运行日志,便于调试和问题排查。 在使用 Hibernate 时,开发者还需要配置 Hibernate 的属性,例如数据库连接信息、方言、缓存策略...
log4j作为一款强大的日志框架,其配置文件log4j.properties提供了丰富的参数设置,使得日志输出可定制化。本文将详细解析log4j.properties中的各项参数,以帮助开发者更好地理解和使用。 首先,我们要了解日志输出...
3. **dom4j-x.x.x.jar**:这是一个XML处理库,Hibernate使用它来处理XML配置文件,如hibernate.cfg.xml,以及XML形式的映射文件,如.hbm.xml,这些文件定义了实体类与数据库表之间的映射关系。 4. **jta-x.x.x.jar*...
SLF4J绑定到Log4j 1.2.14,这是Apache Log4j的一个版本,Log4j是一个广泛使用的日志记录库,提供灵活的日志配置和丰富的日志级别。SLF4J使得在项目中切换日志框架变得简单,而无需修改代码。 接着,`log4j-1.2.14....
标题中的“所有工具jar包ant+charDirector+dojo+dom+hibernate+junite+log4j+spring+struts+xml+jspSmartUpload.jar”指的是一个包含多种Java开发常用的库和框架的集合,这些库和框架对于Java Web开发者来说至关重要...
这个项目使用了Maven进行模块化管理,版本分别对应于Spring 4.0.6、SpringMVC 4.0.6和Mybatis 3.2.7,日志处理则采用了log4j 2.1。下面将详细讲解这些技术及其在项目中的应用。 **Maven多模块项目** Maven是一个...
7. **slf4j-api.jar** 和 **slf4j-log4j12.jar**:简单日志门面(SLF4J)和具体实现Log4j,用于记录Hibernate的日志信息。 8. **javassist.jar**:动态字节码生成库,Hibernate用它来实现运行时的类增强。 9. **...
在Hibernate中,通过log4j.properties文件配置,可以方便地管理框架的日志信息,避免日志记录出现问题。 7. **dom4j-1.6.1.jar**:DOM4J是一个Java XML API,提供了丰富的XML处理功能,包括解析、创建和修改XML文档...
为了便于调试和问题排查,可以配置日志框架,如Log4j或SLF4J: ```xml <property name="hibernate.archive.autodetection">class, hbm <property name="hibernate.show_sql">true <property name="hibernate....
5. **其他依赖**:Hibernate 5可能还需要其他一些库,如slf4j-api.jar和slf4j-log4j12.jar,它们提供了简单日志门面(SLF4J)的接口和实现,使得日志框架的选择更加灵活。 6. **实体管理**:在Hibernate中,实体类...