JavaShuo
欄目
標籤
將log4j重定向到指定函數
時間 2019-11-13
標籤
log4j
log
重定
向到
指定
函數
欄目
Log4j
简体版
原文
原文鏈接
測試程序源代碼
html
[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
>
相關文章
1.
stm32_013_STM32printf()函數重定向到串口
2.
IIS設置將http重定向到https
3.
將GRUB輸出重定向到串口
4.
Google Chrome將localhost重定向到https
5.
C#: 將輸出重定向
6.
將您的重定向次數過多
7.
log4j配置指定類輸出到指定的日誌文件
8.
jsp指令和重定向
9.
log4j記錄日誌到指定文件
10.
log4j輸出到指定日誌文件
更多相關文章...
•
僞造重定向ICMP數據包
-
TCP/IP教程
•
Scala 指定函數參數名
-
Scala教程
•
RxJava操作符(十)自定義操作符
•
算法總結-雙指針
相關標籤/搜索
IAT重定向
重定向
定向
重定
指定
定數
指數函數
定向越野
未指定
Log4j
網站建設指南
MyBatis教程
NoSQL教程
數據傳輸
數據庫
數據業務
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
IDEA 2019.2解讀:性能更好,體驗更優!
2.
使用雲效搭建前端代碼倉庫管理,構建與部署
3.
Windows本地SVN服務器創建用戶和版本庫使用
4.
Sqli-labs-Less-46(筆記)
5.
Docker真正的入門
6.
vue面試知識點
7.
改變jre目錄之後要做的修改
8.
2019.2.23VScode的c++配置詳細方法
9.
從零開始OpenCV遇到的問題一
10.
創建動畫剪輯
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
stm32_013_STM32printf()函數重定向到串口
2.
IIS設置將http重定向到https
3.
將GRUB輸出重定向到串口
4.
Google Chrome將localhost重定向到https
5.
C#: 將輸出重定向
6.
將您的重定向次數過多
7.
log4j配置指定類輸出到指定的日誌文件
8.
jsp指令和重定向
9.
log4j記錄日誌到指定文件
10.
log4j輸出到指定日誌文件
>>更多相關文章<<