log4j之自定义属性
通过 http://blog.chinaunix.net/uid-28953367-id-4098272.html 这篇文章可以了解到,log4j配置文件中,可供使用者自行定义的仅有appender(创建appender),如果想自定义appender(或layout等其他)属性,应该如何做?其实log4j提供了良好的框架来供开发者扩展自己的功能。
以org.apache.log4j.net.SocketAppender为例,定义一个SocketAppender,如下
查看log4j源码,可以看到,org.apache.log4j.net.SocketAppender拥有众多属性,诸如RemoteHost Port reconnectionDelay address locationInfo等,通过跟踪log4j源码可以了解到,log4j在加载配置文件时,会使用反射机制,通过org.apache.log4j.config.PropertySetter类中的setProperty方法,并调用SocketAppender类中各属性的set方法,将配置文件中各属性值设置到SocketAppender实例中(各属性值会根据实际属性类型进行转换)。
了解到log4j加载配置文件的过程之后,为log4j添加自定义属性的思路便就明了了。
如,想在SocketAppender中增加一个projName属性,以标识该工程的工程名,步骤如下
一、修改配置文件,为SocketAppender增加projName属性
此时运行代码,会报出 log4j:WARN No such property [projName] in org.apache.log4j.net.SocketAppender. 的错误,这是因为源码中SocketAppender类并没有projName属性。
二、修改org.apache.log4j.net.SocketAppender源码
在org.apache.log4j.net.SocketAppender源码中,添加 String projName; 属性,并为其添加 set/get 方法,再次运行程序,便会发现再无上述错误出现,调试程序可以发现,log4j会自动调用SocketAppender中setProjName方法设置SocketAppender实例中的projName值。
为其他appender或者layout添加自定义属性的步骤类似,接下来,便可以编写自己的代码,在实际代码中使用这些自定义的属性了。
阅读(35) | 评论(0) | 转发(0) |
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
通过 http://blog.chinaunix.net/uid-28953367-id-4098272.html 这篇文章可以了解到,log4j配置文件中,可供使用者自行定义的仅有appender(创建appender),如果想自定义appender(或layout等其他)属性,应该如何做?其实log4j提供了良好的框架来供开发者扩展自己的功能。
以org.apache.log4j.net.SocketAppender为例,定义一个SocketAppender,如下
- #socket
- log4j.appender.socket=org.apache.log4j.net.SocketAppender
- log4j.appender.socket.RemoteHost=10.10.40.25
- log4j.appender.socket.Port=8888
- #重发间隔ms
- log4j.appender.socket.reconnectionDelay=1000
了解到log4j加载配置文件的过程之后,为log4j添加自定义属性的思路便就明了了。
如,想在SocketAppender中增加一个projName属性,以标识该工程的工程名,步骤如下
一、修改配置文件,为SocketAppender增加projName属性
- #socket
- log4j.appender.socket=org.apache.log4j.net.SocketAppender
- log4j.appender.socket.RemoteHost=10.10.40.25
- log4j.appender.socket.Port=8888
- #重发间隔ms
- log4j.appender.socket.reconnectionDelay=1000
- #本地信息
- log4j.appender.socket.LocationInfo=true
- #自定义属性--工程名
- log4j.appender.socket.projName=myProjName
二、修改org.apache.log4j.net.SocketAppender源码
在org.apache.log4j.net.SocketAppender源码中,添加 String projName; 属性,并为其添加 set/get 方法,再次运行程序,便会发现再无上述错误出现,调试程序可以发现,log4j会自动调用SocketAppender中setProjName方法设置SocketAppender实例中的projName值。
为其他appender或者layout添加自定义属性的步骤类似,接下来,便可以编写自己的代码,在实际代码中使用这些自定义的属性了。
相关热门文章
给主人留下些什么吧!~~
评论热议