青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評(píng)論 :: 0 Trackbacks
公告
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 662249
排名 - 25
最新評(píng)論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫
asio 成為C++首選網(wǎng)絡(luò)庫
--linda
2.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個(gè)mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯(cuò)誤(11074)
2.?SVN中邪惡的replace(11000)
3.?VS2005編譯libevent(10456)
4.?混音算法的學(xué)習(xí)與研究(10258)
5.?C調(diào)用lua腳本的效率測試(9025)
評(píng)論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯(cuò)誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
解決log4cxx退出時(shí)的異常
解決log4cxx退出時(shí)的異常
(金慶的專欄)
如果使用log4cxx的FileWatchdog線程來監(jiān)視日志配置文件進(jìn)行動(dòng)態(tài)配置,就可能碰到程序退出時(shí)產(chǎn)生的異常。
程序退出時(shí)清理工作耗時(shí)很長時(shí),該異常很容易出現(xiàn)。
原因是main()之后FileWatchdog線程試圖checkAndConfigure()檢查配置文件。
該錯(cuò)誤已提交,見:LOGCXX-416 ( https://issues.apache.org/jira/browse/LOGCXX-416?jql=project%20%3D%20LOGCXX )
其中有錯(cuò)誤復(fù)現(xiàn)代碼。
只需在main()結(jié)束時(shí)結(jié)束Watchdog線程,就可以避開錯(cuò)誤。
log4cxx中的FileWatchdog是個(gè)new出來的變量,沒有結(jié)束,沒有刪除。
可以自定義一個(gè)Watchdog, 僅作為main()的局部變量,main()退出時(shí)自動(dòng)結(jié)束。
用
Log4cxxConfigurator::XmlWatchdog wdog("log4j.xml", 5000);
代替原來的
log4cxx::xml::DOMConfigurator::configAndWatch("log4j.xml", 5000);
例如:
int main()
{
setlocale(LC_ALL, "");
Log4cxxConfigurator::XmlWatchdog wdog("log4j.xml", 5000);
...
}
Log4cxxConfigurator代碼如下:
1
//
log4cxxconfigurator.h
2
#pragma once
3
4
#include
<
string
>
5
#include
<
boost
/
scoped_ptr.hpp
>
6
7
namespace
log4cxx {
namespace
helpers {
8
class
FileWatchdow;
9
}}
10
11
namespace
Log4cxxConfigurator {
12
13
typedef boost::scoped_ptr
<
log4cxx::helpers::FileWatchdog
>
FileWatchdogPtr;
14
15
class
PropertyWatchdow
16
{
17
public
:
18
PropertyWatchdog(
const
std::
string
&
sPropertyFileName,
long
lDelayMs);
19
~
PropertyWatchdog();
20
private
:
21
FileWatchdogPtr m_pImpl;
22
};
23
24
class
XmlWatchdog
25
{
26
public
:
27
XmlWatchdog(
const
std::
string
&
sXmlFileName,
long
lDelayMs);
28
~
XmlWatchdog();
29
private
:
30
FileWatchdogPtr m_pImpl;
31
};
32
33
}
//
namespace Log4cxxConfigurator
34
1
//
log4cxxconfigurator.cpp
2
#include
"
log4cxxconfigurator.h
"
3
4
#include
<
log4cxx
/
helpers
/
filewatchdow.h
>
5
#include
<
log4cxx
/
logmanager.h
>
6
#include
<
log4cxx
/
propertyconfigurator.h
>
7
#include
<
log4cxx
/
xml
/
domconfigurator.h
>
8
9
using
namespace
log4cxx;
10
using
namespace
log4cxx::helpers;
11
using
namespace
log4cxx::xml;
12
13
namespace
{
14
15
class
XmlWatchdogImp :
public
FileWatchdog
16
{
17
public
:
18
XmlWatchdogImp(
const
File
&
filename) : FileWatchdog(filename) {};
19
20
virtural
void
doOnChange()
21
{
22
DOMConfigurator().doConfigure(file, LogManager::getLoggerRepository());
23
}
24
};
25
26
class
PropertyWatchdogImp :
public
FileWatchdog
27
{
28
public
:
29
explicit
PropertyWatchdogImp(
const
File
&
filename) : FileWatchdog(filename) {};
30
31
virtual
void
doOnChange()
32
{
33
PropertyConfigurator().doConfigure(file, LogManager::getLoggerRepository())
34
}
35
};
36
37
}
//
namespace
38
39
namespace
Log4cxxConfigurator {
40
41
PropertyWatchdog::PropertyWatchdog(
const
std::
string
&
sPropertyFileName,
long
lDelayMs)
42
: m_pImpl(
new
PropertyWatchdogImp(File(sPropertyFileName)))
//
scoped_ptr
43
{
44
m_pImpl
->
setDelay(lDelayMs);
45
m_pImpl
->
start();
46
}
47
48
PropertyWatchdog::
~
PropertyWatchdog()
49
{
50
m_pImpl.reset()
51
LogManager::shutdown();
52
}
53
54
XmlWatchdow::XmlWatchdow(
const
std::
string
&
sXmlFileName,
long
lDelayMs)
55
: m_pImpl(
new
XmlWatchdogImp(File(sXmlFileName)))
//
scoped_ptr
56
{
57
m_pImpl
->
setDelay(lDelayMs);
58
m_pImpl
->
start();
59
}
60
61
XmlWatchdog::
~
XmlWatchdog()
62
{
63
m_pImpl.reset();
64
LogManager::shutdown();
65
}
66
67
}
//
namespace Log4cxxConfigurator
68
另外,AsyncAppender線程在退出時(shí)也可能拋 ThreadException,
所以在Watchdog的析構(gòu)中調(diào)用了shutdown().
詳見:Log4Cxx 0.10.0 在 Linux 下退出程序時(shí)導(dǎo)致程序中斷
( http://blog.waterlin.org/articles/log4cxx-10-exit-error-under-linux.html )
posted on 2014-01-15 17:18
金慶
閱讀(969)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
1. C/C++
只有注冊用戶
登錄
后才能發(fā)表評(píng)論。
相關(guān)文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內(nèi)存錯(cuò)誤
std::thread 中的異常會(huì)丟失調(diào)用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標(biāo)記
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲性视频网站
|
欧美日本三区
|
亚洲美女啪啪
|
最新日韩在线视频
|
久久久久久精
|
欧美 日韩 国产在线
|
久久另类ts人妖一区二区
|
欧美在线播放一区
|
乱人伦精品视频在线观看
|
老司机成人在线视频
|
久久一区二区三区四区
|
欧美成人免费在线
|
亚洲精品激情
|
中文欧美字幕免费
|
久久国产精品第一页
|
老司机成人在线视频
|
欧美刺激性大交免费视频
|
久久av老司机精品网站导航
|
久久久久久久97
|
欧美激情女人20p
|
一本一本a久久
|
欧美一区二区视频观看视频
|
模特精品裸拍一区
|
国产精品久久久一区二区
|
国产精品视频精品
|
亚洲日韩欧美视频一区
|
午夜久久影院
|
亚洲电影欧美电影有声小说
|
在线中文字幕一区
|
久久久999精品免费
|
欧美日韩国产经典色站一区二区三区
|
国产女主播视频一区二区
|
亚洲国产女人aaa毛片在线
|
亚洲欧美日韩在线
|
亚洲成色精品
|
久久av资源网
|
国产精品久久久久久av福利软件
|
亚洲少妇诱惑
|
久久综合色影院
|
国产精品亚洲不卡a
|
亚洲三级性片
|
暖暖成人免费视频
|
亚洲欧美日韩精品久久久
|
欧美女激情福利
|
亚洲福利电影
|
久久疯狂做爰流白浆xx
|
亚洲精品一区二区三区福利
|
久久精品99国产精品
|
国产精品视频内
|
亚洲一区二区成人在线观看
|
欧美国产三级
|
久久在线91
|
精品成人国产
|
久久香蕉国产线看观看网
|
午夜国产欧美理论在线播放
|
欧美日韩免费观看一区三区
|
亚洲精品免费在线播放
|
欧美77777
|
中日韩在线视频
|
欧美综合激情网
|
国产精品美女久久久久久免费
|
亚洲日本成人网
|
亚洲韩国日本中文字幕
|
免费看av成人
|
亚洲激情婷婷
|
欧美电影在线观看完整版
|
久久免费的精品国产v∧
|
激情综合网激情
|
欧美国产欧美综合
|
欧美成人精品在线播放
|
亚洲日本欧美在线
|
99www免费人成精品
|
国产精品成av人在线视午夜片
|
在线亚洲一区二区
|
亚洲综合欧美
|
精品88久久久久88久久久
|
久久综合伊人77777
|
久久天天狠狠
|
亚洲精选视频免费看
|
亚洲美女一区
|
国产欧美一区二区色老头
|
久久综合给合
|
女仆av观看一区
|
日韩一区二区精品在线观看
|
日韩天天综合
|
国产日韩一级二级三级
|
噜噜噜久久亚洲精品国产品小说
|
久久一区欧美
|
亚洲午夜高清视频
|
欧美在线首页
|
亚洲欧洲视频
|
亚洲欧美精品suv
|
精品9999
|
亚洲美女视频在线观看
|
国际精品欧美精品
|
亚洲国产精品电影
|
国产精品视频免费在线观看
|
欧美不卡激情三级在线观看
|
欧美日韩国产美女
|
久久精品盗摄
|
欧美国产日韩精品免费观看
|
欧美伊人久久久久久久久影院
|
久久免费高清
|
亚洲欧美日韩专区
|
久久手机精品视频
|
午夜精品区一区二区三
|
美女999久久久精品视频
|
亚洲欧美另类中文字幕
|
欧美成人国产
|
久久久人成影片一区二区三区
|
欧美精品一区二区精品网
|
精品成人一区
|
99riav国产精品
|
亚洲精品资源美女情侣酒店
|
性色av香蕉一区二区
|
亚洲毛片在线观看
|
久久精品在线
|
久久精品系列
|
国产精品久线观看视频
|
亚洲精品一区二区三区蜜桃久
|
久久精品人人做人人爽电影蜜月
|
欧美在线免费一级片
|
一区二区电影免费在线观看
|
久久免费国产精品
|
欧美中在线观看
|
国产精品伦子伦免费视频
|
亚洲国产精品欧美一二99
|
国语自产偷拍精品视频偷
|
亚洲免费影视第一页
|
亚洲一级免费视频
|
欧美精品九九99久久
|
亚洲黄色一区二区三区
|
在线播放国产一区中文字幕剧情欧美
|
国产精品日韩精品
|
一本久久综合
|
亚洲自拍电影
|
欧美欧美天天天天操
|
欧美激情四色
|
久热精品在线
|
国产一区二区三区成人欧美日韩在线观看
|
亚洲精品久久久久
|
亚洲精品一区二区三区在线观看
|
久久久精品一区
|
久久久久久久欧美精品
|
国产乱码精品一区二区三区忘忧草
|
国产中文一区二区三区
|
亚洲网站在线
|
性18欧美另类
|
国产婷婷成人久久av免费高清
|
亚洲一区二区三区视频播放
|
亚洲午夜久久久久久久久电影院
|
午夜精品久久一牛影视
|
欧美一区二区三区啪啪
|
国产欧美视频一区二区三区
|
久久精品99国产精品日本
|
亚洲欧洲精品成人久久奇米网
|
欧美一区在线直播
|
久久久一本精品99久久精品66
|
亚洲第一黄网
|
欧美久久电影
|
一区二区三区久久
|
欧美亚洲视频在线观看
|
国产精品一二
|
六月天综合网
|
亚洲精品一区二区三区av
|
先锋影音网一区二区
|
国产色综合久久
|
久久综合九色综合欧美就去吻
|
亚洲乱码国产乱码精品精天堂
|
一本色道久久综合亚洲精品不卡
|
欧美国产一区视频在线观看
|
欧美一区二区视频观看视频
|
亚洲国产91
|
欧美99在线视频观看
|
亚洲精品日韩综合观看成人91
|
亚洲在线电影
|
精东粉嫩av免费一区二区三区
|
老妇喷水一区二区三区
|
一本色道久久综合亚洲精品按摩
|
99在线|亚洲一区二区
|
国产精品美女久久久久久久
|
欧美日韩成人免费
|
亚洲一区二区免费
|
欧美高清一区
|
午夜精品亚洲一区二区三区嫩草
|
精品99一区二区
|
欧美手机在线视频
|
久久久久久久欧美精品
|
亚洲精品在线电影
|
久久精品视频免费
|
一区二区三区鲁丝不卡
|
含羞草久久爱69一区
|
欧美日韩另类一区
|
久久久久久**毛片大全
|
日韩视频不卡
|
麻豆成人在线
|
麻豆乱码国产一区二区三区
|
亚洲一区在线观看免费观看电影高清
|
一本久久综合亚洲鲁鲁
|
国内精品久久久
|