青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(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)
相冊
公告照片
搜索
積分與排名
積分 - 660421
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11062)
2.?SVN中邪惡的replace(10988)
3.?VS2005編譯libevent(10436)
4.?混音算法的學習與研究(10242)
5.?C調用lua腳本的效率測試(9020)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
使用Python的logging.config
使用Python的logging.config
Python的logging模塊接口仿log4j,概念上一致,使用上相當方便。
利用logging.config.fileConfig(),可以將日志的配置用文件來描述,簡化了日志的初始化。
例程:
#
test.py
import
logging
import
logging.config
logging.config.fileConfig(
"
logging.conf
"
)
#
create logger
logger
=
logging.getLogger(
"
example
"
)
#
"application" code
logger.debug(
"
debug message
"
)
logger.info(
"
info message
"
)
logger.warn(
"
warn message
"
)
logger.error(
"
error message
"
)
logger.critical(
"
critical message
"
)
logHello
=
logging.getLogger(
"
hello
"
)
logHello.info(
"
Hello world!
"
)
配置文件示例如下:
# logging.conf
[
loggers
]
keys
=
root
,
example
[
handlers
]
keys
=
consoleHandler
,
rotateFileHandler
[
formatters
]
keys
=
simpleFormatter
[
formatter_simpleFormatter
]
format
=
[
%(asctime)s
]
(%(levelname)s)%(name)s : %(message)s
[
logger_root
]
level
=
DEBUG
handlers
=
consoleHandler
,
rotateFileHandler
[
logger_example
]
level
=
DEBUG
handlers
=
consoleHandler
,
rotateFileHandler
qualname
=
example
propagate
=
0
[
handler_consoleHandler
]
class
=
StreamHandler
level
=
DEBUG
formatter
=
simpleFormatter
args
=
(sys.stdout
,
)
[
handler_rotateFileHandler
]
class
=
handlers.RotatingFileHandler
level
=
DEBUG
formatter
=
simpleFormatter
args
=
('test.log'
,
'a'
,
200000
,
9
)
注意,RotatingFileHandler中doRollover()會因為rename()出錯而中途退出,造成日志文件沒有打開,并且后繼的日志消息都因為日志文件沒有打開而失敗。可以自己在rename()處加上try,或者不用RotatingFileHandler。估計隔一段時間就fileConfig()一次也是可以恢復正常。
詳見:
Python logging RotatingFileHandler bug
該錯誤僅當日志文件滿時切換文件時才可能發生,當文件被鎖定時才會出錯。正常使用不會有問題,并且日志出錯不會影響主程序的運行。所以可以放心使用,想再可靠點就直接在源碼中加個try.
(轉載請注明來源于金慶的專欄)
posted on 2007-09-03 11:35
金慶
閱讀(6419)
評論(6)
編輯
收藏
引用
所屬分類:
6. Python
評論
#
請教一下:
2007-10-30 10:19
APACHE
現在我有個問題想問一下,我打開一個LOG文件并輸出,最后怎么關閉這個LOG文件呢?shutdown?
代碼如下:
class CLogInfo:
#output the information to log,it will be instanced in testcase modele.
def __init__(self,logfile="testcase.log"):
try:
import logging
self.logger = None
self.logger = logging.getLogger()
self.hdlr = logging.FileHandler(logfile)
formatter = logging.Formatter("[%(asctime)s]: %(message)s","%Y-%m-%d %H:%M:%S")
self.hdlr.setFormatter(formatter)
self.logger.addHandler(self.hdlr)
self.logger.setLevel(logging.DEBUG)
except:
print "log init error!"
#exit(1)
def output(self,logInfo,errFlag=0):
try:
if (errFlag):
self.logger.error("error:"+logInfo)
#exit(errFlag)
else:
self.logger.info(logInfo)
except:
print "log output error!"
#exit(1)
def close(self):
try:
logging.shutdown([self.hdlr])
except error:
print "log closed error!"
#exit(1)
然后運行:
from logtest import CLogInfo,c1
log = CLogInfo("1.log")
log.output("aaa right")
這些都正確,但是
log.close()就提示錯誤,有知道如何關閉log文件的么?
回復
更多評論
#
ok
2007-10-30 10:39
APACHE
I have find it:
self.logger.removeHandler(self.hdlr)
回復
更多評論
#
re: 使用Python的logging.config
2007-10-30 11:07
金慶
@APACHE
我試了一下是好用的,沒有錯誤,除了logging,error未定義。
你最好給出錯誤信息。
logging.shutdown()是關閉所有處理器。
用self.hdlr.close()也可以。
回復
更多評論
#
re: 使用Python的logging.config
2008-07-25 17:03
feinix
我有個問題想問一下,我想用log直接寫進數據庫
看見網上的例子14
改為
# vim: set fileencoding=<encoding name> :
#!/usr/bin/env python
#coding=utf-8
#import tableE
from sqlobject import *
#from sqlobject import SQLObject
import sys, string, time, logging
connection=connectionForURI('sqlite:/d|/fff.db')
sqlhub.processConnection = connection
class DBHandler(logging.Handler):
def __init__(self, dsn, uid='', pwd=''):
logging.Handler.__init__(self)
#import mx.ODBC.Windows
class execptionsf(SQLObject):
Created= DateTimeCol
Name= StringCol()
LogLevel= StringCol()
LevelText= StringCol()
Message= StringCol()
Filename= StringCol()
Pathname= StringCol()
Lineno= StringCol()
Milliseconds= StringCol()
Exception= StringCol()
Thread= StringCol()
execptionsf.createTable(ifNotExists=True)
#def _set_Execptions(self,Created,RelativeCreated,Name,LogLevel,LevelText,Message,Filename,Pathname,Lineno,Milliseconds,Exception,Thread):
#self.dsn = dsn
#self.uid = uid
#self.pwd = pwd
#self.conn = mx.ODBC.Windows.connect(self.dsn, self.uid, self.pwd)
#self.SQL =
"""INSERT INTO Events (
Created,
RelativeCreated,
Name,
LogLevel,
LevelText,
Message,
Filename,
Pathname,
Lineno,
Milliseconds,
Exception,
Thread
)
VALUES (
%(dbtime)s,
%(relativeCreated)d,
'%(name)s',
%(levelno)d,
'%(levelname)s',
'%(message)s',
'%(filename)s',
'%(pathname)s',
%(lineno)d,
%(msecs)d,
'%(exc_text)s',
'%(thread)s'
);
"""
#self.cursor = self.conn.cursor()
def formatDBTime(self, record):
record.dbtime = time.strftime("#%m/%d/%Y#", time.localtime(record.created))
def emit(self, record):
try:
#use default formatting
self.format(record)
#now set the database time up
self.formatDBTime(record)
if record.exc_info:
record.exc_text = logging._defaultFormatter.formatException(record.exc_info)
else:
record.exc_text = ""
execptionsf.Created= %(dbtime)s
execptionsf.RelativeCreated=Created
execptionsf.Name= '%(name)s'
execptionsf.LogLevel= '%(levelno)s'
execptionsff.LevelText= '%(levelname)s'
execptionsf.Message= '%(message)s'
execptionsf.Filename= '%(filename)s'
execptionsf.Pathname= '%(pathname)s'
execptionsf.Lineno= '%(lineno)s'
execptionsf.Milliseconds= '%(msecs)s'
execptionsf.Exception= '%(exc_text)s'
execptionsf.Thread= '%(thread)s'
#sql = self.SQL % record.__dict__
#self.cursor.execute(sql)
#self.conn.commit()
except:
import traceback
ei = sys.exc_info() #get the tracebak infomation
traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
del ei
def close(self):
#self.cursor.close()
#self.conn.close()
logging.Handler.close(self)
dh = DBHandler('Logging')
logger = logging.getLogger("")
# logger
# logger.setLevel(logging.DEBUG)
logger.addHandler(dh)
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')
try:
import math
math.exp(1000)
except:
logger.exception("Problem with %s", "math.exp")
logging.shutdown()
不知道怎么錯誤了……因為我不知道,Log的信息什么的由哪里傳遞出來。
回復
更多評論
#
re: 使用Python的logging.config
2008-07-25 18:26
金慶
@feinix
錯誤信息呢?還要給出原例子的地址,看看你改了什么?
回復
更多評論
#
re: 使用Python的logging.config
2008-07-26 16:22
feinix
@金慶
多謝,我已經找到了,是那個record,它帶有相關的屬性值。
我想知道,這里邊的config和log程序的編寫,有什么關系么?可以用設置來代替編寫?而且你寫這個日志程序怎么使用?在每個需要的模塊中直接調用?
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
vs2017 linux 編譯輸出改成 vs 格式
xlsx批量轉為utf8的csv
如何運行 rpcz python example
Windows上Python讀取stdin出錯
建立Socket Policy服務器
python計算24點
(Python編程)Pickle對象
Boost.Python中文文檔下載
用Boost.Python構建混合系統
Python封裝的性能研究
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲激精日韩激精欧美精品
|
在线观看国产精品网站
|
亚洲午夜羞羞片
|
夜夜夜精品看看
|
99成人在线
|
中文在线一区
|
亚洲欧美日韩另类精品一区二区三区
|
亚洲一区日韩
|
久久亚洲风情
|
欧美日本精品一区二区三区
|
国产精品久久久久9999高清
|
国产日韩欧美综合精品
|
好吊妞**欧美
|
一二三四社区欧美黄
|
亚洲欧美一区在线
|
免费观看日韩av
|
一本色道久久
|
久久亚洲高清
|
国产精品国产亚洲精品看不卡15
|
国内自拍视频一区二区三区
|
99精品视频网
|
久久天堂成人
|
一二三区精品
|
另类激情亚洲
|
国产免费成人av
|
日韩视频一区二区
|
久久亚洲春色中文字幕久久久
|
日韩午夜免费视频
|
久久视频这里只有精品
|
国产精品成人在线观看
|
在线观看欧美视频
|
亚洲欧美制服中文字幕
|
欧美成人黑人xx视频免费观看
|
一本久久综合亚洲鲁鲁五月天
|
亚洲一区二区三区精品视频
|
国产婷婷色综合av蜜臀av
|
亚洲国产精品t66y
|
欧美专区18
|
洋洋av久久久久久久一区
|
久久另类ts人妖一区二区
|
国产精品免费福利
|
亚洲乱码视频
|
久久一区二区三区四区
|
亚洲一区制服诱惑
|
欧美绝品在线观看成人午夜影视
|
国产在线一区二区三区四区
|
亚洲一区久久
|
99视频精品免费观看
|
欧美国产高潮xxxx1819
|
亚洲电影在线看
|
另类亚洲自拍
|
久久久久久97三级
|
国产在线精品自拍
|
久久麻豆一区二区
|
亚洲综合日韩中文字幕v在线
|
欧美色图一区二区三区
|
亚洲天堂av图片
|
亚洲伦理自拍
|
欧美区一区二区三区
|
亚洲国内高清视频
|
欧美激情2020午夜免费观看
|
久久五月激情
|
亚洲精品免费电影
|
亚洲黄色有码视频
|
欧美国产激情二区三区
|
91久久精品一区
|
亚洲国产日韩欧美在线图片
|
欧美.www
|
99re这里只有精品6
|
亚洲国产欧美一区二区三区久久
|
牛夜精品久久久久久久99黑人
|
亚洲欧洲视频
|
一区二区三区成人精品
|
国产精品嫩草99av在线
|
亚洲午夜av
|
亚洲欧美日韩精品久久久
|
国产毛片一区
|
免费不卡视频
|
欧美精品久久久久久久
|
亚洲午夜精品一区二区
|
亚洲午夜一区二区
|
国产亚洲综合精品
|
噜噜噜躁狠狠躁狠狠精品视频
|
男女激情久久
|
亚洲综合日韩在线
|
久久精彩视频
|
亚洲美女在线国产
|
亚洲欧美日韩国产综合在线
|
欧美性大战xxxxx久久久
|
在线视频一区观看
|
亚洲欧美日本国产专区一区
|
激情久久影院
|
中文在线资源观看网站视频免费不卡
|
亚洲福利免费
|
亚洲精品裸体
|
国产日本欧美一区二区三区在线
|
欧美一区二区三区免费观看视频
|
狠狠入ady亚洲精品经典电影
|
欧美成人亚洲成人
|
欧美视频在线一区二区三区
|
久久久久久一区二区
|
欧美女人交a
|
久久香蕉精品
|
国产精品久久久久久久浪潮网站
|
另类尿喷潮videofree
|
欧美色123
|
欧美成人自拍
|
国产午夜精品一区二区三区欧美
|
亚洲国产你懂的
|
影音先锋另类
|
亚洲中无吗在线
|
99在线观看免费视频精品观看
|
欧美一级理论片
|
亚洲一区bb
|
欧美护士18xxxxhd
|
美女国内精品自产拍在线播放
|
国产精品福利av
|
亚洲激情av在线
|
亚洲大胆人体视频
|
久久不射电影网
|
欧美一区成人
|
国产精品久久久久久久7电影
|
亚洲破处大片
|
亚洲精品美女免费
|
欧美成年人在线观看
|
久久久久九九九九
|
国产精品网站视频
|
一区二区欧美激情
|
中文国产成人精品
|
欧美日韩午夜在线
|
一本大道av伊人久久综合
|
亚洲精品美女
|
欧美日韩成人综合
|
亚洲精品1区2区
|
日韩午夜在线播放
|
欧美精品久久久久a
|
亚洲精品视频二区
|
宅男精品视频
|
国产精品第13页
|
中文在线资源观看视频网站免费不卡
|
亚洲午夜久久久久久久久电影院
|
欧美日韩免费精品
|
avtt综合网
|
亚洲在线中文字幕
|
国产精品试看
|
欧美一区日韩一区
|
久久久噜噜噜久久
|
亚洲一区自拍
|
欧美亚州韩日在线看免费版国语版
|
老司机免费视频一区二区
|
国产一区二区三区日韩
|
久久精品一区中文字幕
|
欧美不卡高清
|
亚洲伦理在线
|
国产精品videosex极品
|
亚洲欧美日韩一区二区三区在线
|
久久精品视频在线看
|
国内精品伊人久久久久av影院
|
久久久精品免费视频
|
亚洲国产天堂久久综合
|
亚洲一区二区在线看
|
国产午夜精品一区二区三区欧美
|
欧美日韩精品欧美日韩精品
|
欧美精品手机在线
|
一区二区三区不卡视频在线观看
|
欧美日本一区二区高清播放视频
|
亚洲精品美女久久久久
|
午夜精品999
|
亚洲国产精品综合
|
国产精品久久久99
|
毛片基地黄久久久久久天堂
|
欧美极品一区
|
亚洲一区在线直播
|
亚洲国产精品一区二区www在线
|
亚洲人成在线观看一区二区
|
欧美另类极品videosbest最新版本
|
亚洲最新视频在线
|
久久久欧美精品
|
国产精品99久久久久久久久
|
国语对白精品一区二区
|
欧美日韩一区成人
|
久久一区二区精品
|
亚洲欧美日韩在线高清直播
|
亚洲黄色在线
|
浪潮色综合久久天堂
|
午夜视频一区
|
一区二区三区视频在线看
|
极品中文字幕一区
|
国产精品日韩欧美一区
|
欧美激情在线播放
|
久久综合婷婷
|
午夜欧美理论片
|
一区二区精品国产
|
亚洲精品综合
|
亚洲日本免费
|
欧美.日韩.国产.一区.二区
|
久久精品国产亚洲aⅴ
|
亚洲欧美经典视频
|
中国成人在线视频
|
亚洲美女色禁图
|