`

log4j.properties配置实例

    博客分类:
  • Java
阅读更多

log4j.properties全配置

###############################log4j.properties###############################
##### Global Log Level(OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL) #############
log4j.rootLogger=DEBUG,STDOUT,DB

###### STDOUT Logger ###############
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
#输出目的Appender的日志级别,Appender的级别设置要优先于logger的
#级别设置,即先使用Appender的,而不管logger的日志级别是怎样设置的
log4j.appender.STDOUT.Threshold=DEBUG
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n

###### File Logger ###############
#开发时,使用DEBUG,发布时最好修改成INFO,如果未设置级别,则使用
#父日志记录器的,设置了就使用logger的,不管父日志怎样设置
log4j.logger.com.mypakge=DEBUG,FILELOGER
#开发时设为true,表示需要屏幕输出,发布时这里最好设置为false,表示不继承父日志记录器的Appender
log4j.additivity.com.mypakge=true
log4j.appender.FILELOGER=org.apache.log4j.RollingFileAppender
#设置日志输出编码方式为UTF-8,如果不指定,会以当前运行操作系统的编码方式记录,这样在有的Linux上会出面乱码
log4j.appender.FILELOGER.encoding=UTF-8
#${LOGS_PATH}为JVM环境变量,我们可以在运行里给JVM加上该参数 -DLOGS_PATH=e:/tmp/log
log4j.appender.FILELOGER.File=${LOGS_PATH}/system.log
log4j.appender.FILELOGER.MaxFileSize=1024KB
log4j.appender.FILELOGER.MaxBackupIndex=10
#文件采用追加方式
log4j.appender.FILELOGER.Append=true
log4j.appender.FILELOGER.layout=org.apache.log4j.PatternLayout
log4j.appender.FILELOGER.layout.ConversionPattern=[%d{yyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c] [%l] - [%m]%n

###### THREAD Logger ###############
#线程日志一般记入到另一个文件,线程日志与主线程日志基本上没有什么逻辑关系
log4j.logger.threadlogger=DEBUG,THREADLOGER
log4j.additivity.threadlogger=true
log4j.appender.THREADLOGER=org.apache.log4j.RollingFileAppender
log4j.appender.THREADLOGER.encoding=UTF-8
log4j.appender.THREADLOGER.File=${LOGS_PATH}/threadLog.log
log4j.appender.THREADLOGER.MaxFileSize=2000KB
log4j.appender.THREADLOGER.MaxBackupIndex=10
log4j.appender.THREADLOGER.layout=org.apache.log4j.PatternLayout
log4j.appender.THREADLOGER.layout.ConversionPattern=[%d{yyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c] [%l] - [%m]%n

###### SOCKET Logger ###############
log4j.addivity.org.apache=true
log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender
#注,SocketAppender没有encoding属性,而接收日志的服务器端类org.apache.log4j.net.Socke
#tServer也不能设置编码方式,这里在考虑他们在通信时是不是传递的对象,而不是传递的字符串呢?
#log4j.appender.SOCKET.encoding=UTF-8
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=8089
log4j.appender.SOCKET.LocationInfo=true
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
#这里的格式配置不是很中要,好像不是要所这里的格式要输出那些消息,这里还是这个疑问就是在通信时是否是
#传递的是序列化后的对象?因为服务器接收到消息后能以任何格式输出,可见传递的信息是完整的。~@!@#!哈
#刚跟了一下org.apache.log4j.net.SocketAppender源码,在获取输出流的时候使用的是对象流,如下:
#oos = new ObjectOutputStream(socket.getOutputStream());,这样就进一步证了我的想法,在
#通信时时传递的是对象,所以就不存在字符编码的问题与客户端日志格式输出问题。
log4j.appender.SOCKET.layout.ConversionPattern=%m

###### MAIL Logger ###############
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=ERROR
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=junJZ_2008@126.com
log4j.appender.MAIL.SMTPHost=smtp.126.com
#如果含有中文,则需使用native2asii log4j.properties log4jxx.properties 进行转换,否则乱码
log4j.appender.MAIL.Subject=Log4J\u63D0\u9192\u60A8\uFF1A\u7CFB\u7EDF\u53D1\u751F\u4E86\u4E25\u91CD\u9519\u8BEF
log4j.appender.MAIL.To=junJZ_2008@163.com
log4j.appender.MAIL.SMTPUsername=junJZ_2008@126.com
log4j.appender.MAIL.SMTPPassword=XXX
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

###### DB Logger ###############
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.URL=jdbc:mysql://127.0.0.1/test
log4j.appender.DB.bufferSize=1
log4j.appender.DB.user=root
log4j.appender.DB.password=111111
log4j.appender.DB.sql=insert into oplog (UserName,opttype,createTime,LogLevel,methodinfo,MSG) values ('%X{UserName}','%X{opttype}','%d{yyyy-MM-dd HH:mm:ss.SSS}','%p','%l','%m')   
log4j.appender.DB.layout=org.apache.log4j.PatternLayout  

配置日志服务器

日志服务器的服务器端由以下类启动:
  log4j jar包中的org.apache.log4j.net.SocketServer 
 三个参数 【监听端口】【日志服务器配置文件】【客户端配置文件目录】
  第三个参数【配置文件目录】其实指的是针对每个客户端的配置文件,名命规则为 "客户端IP.lcf"

基本原理

当日志保存请求发过来时,服务器会根据客户端的IP去在指定的目录(上面第三个参数)下搜索各自的配置文件,如果没有找到的话,再找是否配置了公用的客户端日志配置文件 generic.lcf,如果也没有配置的话,它将日志与服务器运行日志记录在同一文件中(这里为server.log),如果找到了,会把收到的日志按照配置文件要求记录,我在这 里使用的客户端配置文件与log4j.properties是一样的,所以这里会产生与客户机保存的日志是一样的。

 

在运行前还得要修改一下 org.apache.log4j.net.SocketServer 这个类,这个类在取客户端时有问题,网上其他人也这么认为(我使用的是1.215版本),找到 String key = s.substring(0, i); 这一行,修改成 String key = s.substring(i + 1); 即可,然后把修改好的class放入log4j-1.2.15.jar包中(后面附上修改好的包)。

 

socketserver.properties

#文件名socketserver.properties
#如果需要显示日志界面,可以将本行启用
log4j.rootCategory=, A1
log4j.rootLogger=DEBUG,A3,STDOUT
log4j.category.org.apache.log4j.net=INFO

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n

log4j.appender.A1=org.apache.log4j.lf5.LF5Appender
log4j.appender.A1.MaxNumberOfRecords=700

log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.file=${LOGS_PATH}/server.log
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n

 

客户端配置文件 127.0.0.1.lcf

###############################log4j.properties###############################
##### Global Log Level(OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL) #############
log4j.rootLogger=DEBUG,FILELOGER

###### File Logger ###############
#开发时,使用DEBUG,发布时最好修改成INFO,如果未设置级别,则使用
#父日志记录器的,设置了就使用logger的,不管父日志怎样设置
log4j.logger.com.mypakge=DEBUG,FILELOGER
#开发时设为true,表示需要屏幕输出,发布时这里最好设置为false,表示不继承父日志记录器的Appender
log4j.additivity.com.mypakge=true
log4j.appender.FILELOGER=org.apache.log4j.RollingFileAppender
#设置日志输出编码方式为UTF-8,如果不指定,会以当前运行操作系统的编码方式记录,这样在有的Linux上会出面乱码
log4j.appender.FILELOGER.encoding=UTF-8
#${LOGS_PATH}为JVM环境变量,我们可以在运行里给JVM加上该参数 -DLOGS_PATH=e:/tmp/log
log4j.appender.FILELOGER.File=${LOGS_PATH}/client.log
log4j.appender.FILELOGER.MaxFileSize=1024KB
log4j.appender.FILELOGER.MaxBackupIndex=10
#文件采用追加方式
log4j.appender.FILELOGER.Append=true
log4j.appender.FILELOGER.layout=org.apache.log4j.PatternLayout
log4j.appender.FILELOGER.layout.ConversionPattern=[%d{yyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%c] [%l] - [%m]%n

 

 

启动:

java -classpath log4j-1.2.15.jar -DLOGS_PATH=e:/tmp/sverlog o
rg.apache.log4j.net.SocketServer 8089 socketserver.properties .

 

现在使用一个测试类记录日志时,它会往日志服务器发送日志事件,服务器会根据服务器端配置的客户端配置文件记录日志。

 

配置邮件日志

由于刚开始使用1.2.9版本的包时 org.apache.log4j.net.SMTPAppender 发送邮件时不支持用户鉴权操作,而有的邮件服务器在发送时需要先登录后再发送,所以换用了1.2.15的包,SMTPAppender类支持SMTPUsername与SMTPPassword两个鉴权参数,这样就可以发送日志邮件了,具体配置参见文章开头。

 

配置数据库日志

创建表:

 

create table oplog(
    UserName varchar(20),
    opttype varchar(20),
    createTime varchar(30),
    LogLevel varchar(20),
    methodinfo varchar(100),
    MSG varchar(1024),
    primary key (createTime)
)


表中的 UserName 与 opttype 表示用户名与操作类型,插入数据时使用 MDC 类进行预先设置,且配置文件中使用 %x{XXX} 来引用, MDC其实就是Java里的ThreadLocal类的派生类。

 

测试代码:

 

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.MDC;

public class TestLog {
	private static Log log = LogFactory.getLog(TestLog.class);

	public void log() {
		log.debug("Debug info.");
		log.info("Info info");
		log.warn("Warn info");
		log.error("Error info");
		log.fatal("Fatal info");
	}

	public static void main(String[] args) {
		MDC.put("UserName", "jzj");
		MDC.put("opttype", "delete");
		TestLog test = new TestLog();
		test.log();
	}
}
 

 

分享到:
评论

相关推荐

    log4j配置实例(含配log4j.properties及jar包)

    log4j配置实例(含配调用实例、log4j.properties及jar包)

    log4j.properties 配置(实例讲解)

    下面小编就为大家带来一篇log4j.properties 配置(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    log4j入门到详解

    1. Log4j 简介 ........... 2. 下载与使用............ 2.1 下载 log4j 的 jar 文件 2.2 编写一个测试类 ...... 2.3 编写配置文件........ 2.4 输出结果 ........... 3. Log4j 构成 ........... 4. Log4j 使用方法.....

    log4j之properties文件详解

    log4j.properties 配置详解与实例

    log4j配置方法和实例

    log4j.properties的具体配置方法和实例,其中有我自己总接的方法和下载的原理TXT文档,以及我自己写的实例,初学者还是可以参考的

    Linux tomcat下catalina.out日志文件分割

    Linux tomcat下catalina.out日志文件分割...2.拷贝log4j.jar,lo4j.properties到./lib目录下; 3.删除./conf/logging.properties 4.重启 log4j配置样本 实例代码: log4j.rootLogger=INFO,CATALINA log4j.logger.com.dan

    Log4j日志管理系统简单使用说明

     获得了Logger的实例之后,接下来将配置Log4j使用环境:  语法表示:  BasicConfigurator.configure():自动快速地使用缺省Log4j环境。  PropertyConfigurator.configure(String configFilename):读取使用Java...

    用log4j产生日志

    用log4j产生日志,并用log4j.properties配置 有完整的实例,与调用。

    Log4j日志根据模块不同输出到不同的日志文件开发配置,便于监控项目各功能模块的运行情况

    文件中内容包括模块中某个类单独输出到一个日志文件中、模块中某个package单独输出到一个日志文件中、同一模块不同package输出到一个日志文件中三种情况下log4j.properties配置项配置事例、Java类中代码如何一致编写...

    log4j从入门到详解

    1.Log4j简介 2.下载 2.1下载Log4j的jar文件 2.2编写一个测试类 ... 4.1properties配置文件详解 4.2XML配置文件详解 4.3properties比较详细的例子 4.4在代码中使用Log4j 4.5注意事项 5.Properties文件实例说明

    SSM框架(Spring+SpringMVC+MyBatis) 整合实例

    分别是spring-mybatis.xml,包含spring和mybatis的配置文件,还有个是spring-mvc的配置文件,此外有2个资源文件:jdbc.propertis和log4j.properties。完整目录结构如下: 使用框架都是较新的版本: Spring 4.0.2 ...

    BOS技术整理-05

    引入 log4j.properties 文件 @WebService使用类上面,标记类是webservice服务提供对象 @WebMethod使用在方法上面,标记方法是webservice服务提供方法 WS整合spring服务器端开发 CXF需要在web.xml中配置...

    ibatis 开发指南(pdf)

    在 CLASSPATH 中新建log4j.properties 配置文件,内容如下: log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log...

    基于EXT SSI的简单树实现

    一个基于EXT实现的树,先上图。 动态加载加右键菜单。 希望拿到可以跑起来看看效果...2 写log4j.properties 3 在代码中使用方式 static Log log = LogFactory.getLog("Action类"); log.debug("result is " + result);

    (2.0版本)自己写的struts2+hibernate+spring实例

    1.1-beta-7.jar jdbc2_0-stdext.jar jta.jar log4j-1.2.11.jar xerces-2.6.2.jar xml-apis.jar c3p0-0.9.0.jar concurrent-1.3.2.jar connector.jar jboss-cache.jar jboss...

    jdbc连接数据库getConnection 增、删、改、查

    import org.apache.log4j.PropertyConfigurator; public class ConfigSQLHelper { protected static Properties pro = null; protected static InputStream is = null; protected static Connection conn = null; ...

    ssh(structs,spring,hibernate)框架中的上传下载

     代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 4. destroy-method="close"> 5. ...

    Java学习笔记-个人整理的

    {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache.commons}{211}{section.14.6} {15}sqlite3}{213}{chapter.15} {16}Web基础}{215}{chapter.16} {16.1}...

Global site tag (gtag.js) - Google Analytics