不错的教程:http://kdboy.iteye.com/blog/208851
下面是我的测试文件:
import org.apache.log4j.HTMLLayout;
import org.apache.log4j.Logger;
public class Jtest extends HTMLLayout {
public static Logger log = Logger.getLogger(Jtest.class);
public static void main(String[] args) {
try {
throw new RuntimeException("wrong");
} catch (Exception e) {
String info = "hello>>";
for (int i = 0; i < 20000; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
log.error(i + "sunyard>>>" + e.getMessage() + info);
}
}
}
}
操作数据库(记着加驱动包):
log4j.rootLogger=ERROR,appender1,appender2
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appnder.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n
log4j.appender.appender2=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.appender2.driver=com.mysql.jdbc.Driver
log4j.appender.appender2.URL=jdbc:mysql://localhost:3306/log4j?useUnicode=true&characterEncoding=UTF-8
log4j.appender.appender2.user=root
log4j.appender.appender2.password=root
log4j.appender.appender2.sql=insert into logtable (cdate, message) VALUES ('%d{yyyy-MM-dd hh:mm:ss}', '%c %p %m %n')
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
发送邮件:
log4j.rootLogger=DEBUG,CONSOLE,MAIL
log4j.addivity.org.apache=true
# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread] n%c[CATEGORY]%n%m[MESSAGE]%n%n
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.syslog.encoding=UTF-8
# 日志的错误级别
log4j.appender.MAIL.Threshold=ERROR
# 缓存文件大小,日志达到512K时发送Email
log4j.appender.MAIL.BufferSize=512
# 发送邮件的服务器
log4j.appender.MAIL.SMTPHost=smtp.163.com
log4j.appender.MAIL.encoding=UTF-8
# 邮件的标题
log4j.appender.MAIL.Subject=mail subject
# 用户名
log4j.appender.MAIL.SMTPUsername=m15711121933@163.com
# 密码
log4j.appender.MAIL.SMTPPassword=*******
log4j.appender.MAIL.SMTPDebug=TRUE
# 发件人地址
log4j.appender.MAIL.From=m15711121933@163.com
# 日志邮件的接收者531453134@qq.com
log4j.appender.MAIL.To=dengw.li@sunyard.com, 531453134@qq.com
# 日志PatternLayout
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
# 日志的格式
log4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n %d - %c -%-4r [%t] %-5p %c %x - %m%n
不过, 邮件会出现中文乱码, 还未解决!
注意, 最好在要接受的用户服务器上设置163.com为白名单, 否则可能会被认为是垃圾邮件被屏蔽。
log4j.rootLogger=info, R
# 根据日志文件大小自动产生新日志文件,最多产生100个备份文件,
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=backup.log
log4j.appender.R.MaxFileSize=512KB
log4j.appender.R.MaxBackupIndex=100
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#按照一定时间产生日志文件,配置文件如下:
log4j.rootLogger=ERROR,R
# R is set to be a DailyRollingFileAppender.
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=backup.log
#每分钟产生一个日志文件
log4j.appender.R.DatePattern = '.'yyyy-MM-dd-HH-mm
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#以上配置是每天产生一个备份文件。其中备份文件的名字叫backup.log
#具体的效果是这样:当天的日志信息记录在backup.log文件中
#前一天的记录在名称为backup.log.yyyy-mm-dd 的文件中。
#类似的,如果需要每月产生一个文件可以修改上面的配置:
#将log4j.appender.R.DatePattern = '.'yyyy-MM-dd改为
#log4j.appender.R.DatePattern = '.'yyyy-MM
#每分钟产生一个日志文件log4j.appender.R.DatePattern = '.'yyyy-MM-dd-HH-mm
#以网页的形式每分钟产生一个日志文件
log4j.rootLogger=ERROR,R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=backup.html
log4j.appender.R.DatePattern = '.'yyyy-MM-dd-HH-mm
log4j.appender.R.layout=org.apache.log4j.HTMLLayout