首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
将log4j重定向到指定函数
时间:
2015-03-02 19:26:31
阅读:
201
评论:
0
收藏:
0
[点我收藏+]
标签:
测试程序源代码
[java]
view plain
copy
import
org.apache.log4j.Logger;
/**
* 使Log4j的log输出重定向到指定函数
* Last Update Date: 2014-01-23
* 依赖库
* [1]log4j-1.2.9.jar
* [2]JDK 1.6.x
* @author lijun
*
*/
public
class
TestMain{
static
Logger log = Logger.getLogger(TestMain.
class
.getName());
public
static
void
main(String[] args)
{
try
{
TestMain tm =
new
TestMain();
/*
打印所有的Appender实例
Enumeration enumd=log.getRootLogger().getAllAppenders();
while(enumd.hasMoreElements()){
Appender app=(Appender)enumd.nextElement();
System.out.println(app.getName());
System.out.println("in appender");
}
*/
/*
取Class的Method的方法
Class ptypes[] = new Class[1];
ptypes[0] = Class.forName("java.lang.String");
Method m = TestMain.class.getMethod("DebugMsg",ptypes);
*/
{
CallbackAppender ca = (CallbackAppender)Logger.
getRootLogger().getAppender(
"ca"
);
if
(ca!=
null
)
ca.SetCallback(tm.getClass().getMethod(
"DebugMsg"
,
new
Class[] {String.
class
}));
}
log.debug(
"from my appender!"
);
}
catch
(Exception ex)
{
ex.printStackTrace();
}
}
public
static
void
DebugMsg(String msg) {
System.out.println(
"现在log输出被指定到这里了 => "
+msg);
}
}
Appender源代码
[java]
view plain
copy
import
java.lang.reflect.Method;
import
org.apache.log4j.AppenderSkeleton;
import
org.apache.log4j.spi.LoggingEvent;
/**
*
* 这个Appender的作用,是使log输出重定向到某个函数里去
* @author lijun
*
*/
public
class
CallbackAppender
extends
AppenderSkeleton {
Method m_ian;
@Override
protected
void
append(LoggingEvent event) {
try
{
String msg =
this
.getLayout().format(event);
//调用方法重定向log输出.begin
if
( m_ian!=
null
)
{
Object[] args = {msg};
m_ian.invoke(
null
, args);
}
//调用方法重定向log输出.end
}
catch
(Exception ie) {
ie.printStackTrace();
}
}
@Override
public
void
close() {
if
(closed)
return
;
//Close动作
//Close标记
closed =
true
;
}
@Override
public
boolean
requiresLayout() {
return
true
;
}
public
void
SetCallback(Method ian)
{
m_ian = ian;
}
}
log4j.xml的配置清单
[html]
view plain
copy
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"
>
<
log4j:configuration
xmlns:log4j
=
‘http://jakarta.apache.org/log4j/‘
>
<
appender
name
=
"myConsole"
class
=
"org.apache.log4j.ConsoleAppender"
>
<
layout
class
=
"org.apache.log4j.PatternLayout"
>
<
param
name
=
"ConversionPattern"
value
=
"[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n"
/>
</
layout
>
<!--过滤器设置输出的级别-->
<
filter
class
=
"org.apache.log4j.varia.LevelRangeFilter"
>
<
param
name
=
"levelMin"
value
=
"debug"
/>
<
param
name
=
"levelMax"
value
=
"warn"
/>
<
param
name
=
"AcceptOnMatch"
value
=
"true"
/>
</
filter
>
</
appender
>
<!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制-->
<
appender
name
=
"ca"
class
=
"CallbackAppender"
>
<
layout
class
=
"org.apache.log4j.PatternLayout"
>
<
param
name
=
"ConversionPattern"
value
=
"[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n"
/>
</
layout
>
</
appender
>
<!-- 根logger的设置-->
<
root
>
<
priority
value
=
"debug"
/>
<!-- <appender-ref ref="myConsole"/> -->
<
appender-ref
ref
=
"ca"
/>
</
root
>
</
log4j:configuration
>
将log4j重定向到指定函数
标签:
原文地址:http://my.oschina.net/u/1398304/blog/381398
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!