发布时间:2014-09-05 15:39:24作者:知识屋
最近由于业务上出现一些莫名其妙的误删除数据,今天研究了下log4j分包输出,想用log4j来记录具体哪些数据被误删除了。
具体做法是:新建一个包,然后再包下建一个新class,然后在class里面记录被删除的数据,在log4j.xml里配置指向此新包的输出文件。
在test工程下实验了一下:
log4j.xml:
[html]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} : %L - %m%n"/>
</layout>
</appender>
<appender name="File" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="D:/log4j/test.log"/>
<param name="MaxFileSize" value="1MB"/>
<param name="MaxBackupIndex" value="10"/>
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n"/>
</layout>
</appender>
<appender name="File1" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="D:/log4j/test1.log"/>
<param name="MaxFileSize" value="1MB"/>
<param name="MaxBackupIndex" value="10"/>
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n"/>
</layout>
</appender>
<logger name="org">
<level value="WARN"/>
</logger>
<logger name="org.apache">
<level value="WARN"/>
</logger>
<logger name="com.zznode.log">
<level value="DEBUG"/>
</logger>
<logger name="com.zznode.test">
<level value="DEBUG"/>
<appender-ref ref="File1" />
</logger>
<logger name="rule">
<level value="INFO"/>
</logger>
<logger name="org.springframework.jdbc.core">
<level value="info"/>
</logger>
<root>
<level value ="DEBUG" />
<appender-ref ref="Console" />
<appender-ref ref="File" />
</root>
</log4j:configuration>
Main方法:
[java]
package com.zznode.log;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
import com.zznode.test.Test;
/**
* @desc:
* @since Nov 8, 2012
* @author chaisson
*
* <p>
*/
public class Log4jApp {
public void printLog() {
Logger log = Logger.getLogger(Log4jApp.class.getClass());
log.info("测试info");
log.debug("测试debug");
log.error("测试error");
}
public static void main(String[] args) {
DOMConfigurator.configure("D:/workspace/Test/log4j.xml");
//PropertyConfigurator.configure("D:/workspace/Test/log4j.properties");
Log4jApp app = new Log4jApp();
app.printLog();
Test test = new Test();
test.printLog();
}
}
工程结构:
输出结果:
其中Eclipse 的Console:
[plain]
14:41:43,858 INFO Class:27 - 测试info
14:41:43,860 DEBUG Class:28 - 测试debug
14:41:43,860 ERROR Class:29 - 测试error
14:41:43,861 DEBUG Test:17 - Test.java debug
14:41:43,861 INFO Test:18 - Test.java info
test.log:
[plain]
2012-11-08 14:41:43.858 INFO [main] Class - 测试info
2012-11-08 14:41:43.860 DEBUG [main] Class - 测试debug
2012-11-08 14:41:43.860 ERROR [main] Class - 测试error
2012-11-08 14:41:43.861 DEBUG [main] Test - Test.java debug
2012-11-08 14:41:43.861 INFO [main] Test - Test.java info
test1.log:
[plain]
2012-11-08 14:41:43.861 DEBUG [main] Test - Test.java debug
2012-11-08 14:41:43.861 INFO [main] Test - Test.java info
这样目的就达到了,把log4j.xml改为log4j.properties,效果是一样的,配置如下:
[plain]
### set log levels ###
log4j.rootLogger = debug,stdout,File
log4j.logger.com.zznode.test=debug,File1
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
log4j.appender.File = org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File = D:/log4j/test.log
log4j.appender.File.Append = true
log4j.appender.File.Threshold = DEBUG
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n
log4j.appender.File1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.File1.File = D:/log4j/test1.log
log4j.appender.File1.Append = true
log4j.appender.File1.Threshold = DEBUG
log4j.appender.File1.layout = org.apache.log4j.PatternLayout
log4j.appender.File1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%t] %c{1} - %m%n
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能