<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    發現python里面擴展了日志打印功能。感覺比java自帶的還好,和log4j很類似。
    下面總結下其用法。先說一種不用配置文件的:
    <log.py>

    ?1#?-*-?coding:?gb2312?-*-
    ?2import?logging
    ?3
    ?4logging.basicConfig(level=logging.INFO,
    ?5????????????????????format='%(asctime)s?%(name)-12s?%(levelname)-8s?%(message)s',
    ?6????????????????????datefmt='%m-%d?%H:%M',
    ?7????????????????????filename='./AutoUpdate.log',
    ?8????????????????????filemode='w')
    ?9
    10console?=?logging.StreamHandler()
    11console.setLevel(logging.INFO)
    12formatter?=?logging.Formatter('%(name)-12s:?%(levelname)-8s?%(message)s')
    13console.setFormatter(formatter)
    14logging.getLogger('').addHandler(console)
    15
    16
    17##?
    18#?console?=?logging.StreamHandler()
    19#?console?=?setLevel(logging.DEBUG)
    20#?formatter?=?logging.Formatter('%(name)-12s:?%(levelname)-8s?%(message)s')
    21#?console.setFormatter(formatter)
    22#?logging.getLogger('').addHandler(console)
    23
    24
    25def?getLogging(name):
    26????return?logging.getLogger(name)

    <test.py>
    import?log

    testlog?
    =?log.getLogging('test')
    testlog.error(?
    "~~~~~~~~~~~~~~test1.")
    testlog.info(?
    "~~~~~~~~~~~~~~test2."?)
    testlog.exception(?
    "~~~~~~~~~~~~~~~~~~~~~~~~~test3.")

    用過log4j的人不會陌生這種用法。如果你對log4j有疑惑,或者想了解請在本人blog內查找關于log4j的文章。有詳細介紹。這里不再贅述。

    第二種使用配置文件的:
    #?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',?10000,?9)

    <test2.py>
    import?logging
    import?logging.config

    logging.config.fileConfig(
    "logger.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!")

    其中值得注意的是args的含義。
    posted on 2008-04-10 22:25 -274°C 閱讀(3322) 評論(0)  編輯  收藏 所屬分類: python

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914354
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 亚洲国产精品日韩| 免费在线观看中文字幕| 久久精品国产亚洲AV无码偷窥| 成年大片免费高清在线看黄| 免费一看一级毛片| h视频免费高清在线观看| 免费jjzz在在线播放国产| 黄色毛片免费网站| 亚洲人成色7777在线观看不卡| 成年网站免费入口在线观看 | 一级毛片在线播放免费| 亚洲性在线看高清h片| 久久国产一片免费观看| 亚洲人精品午夜射精日韩| 日本视频免费高清一本18| 亚洲日本在线观看| 在线观看免费高清视频| 亚洲欧洲无卡二区视頻| 国产免费观看网站| 国产乱妇高清无乱码免费| 亚洲AV无码1区2区久久| 51在线视频免费观看视频| 精品国产日韩久久亚洲| 国产一级淫片a免费播放口之| a级毛片免费高清视频| 亚洲A∨无码一区二区三区| 真人做人试看60分钟免费视频| 亚洲情A成黄在线观看动漫软件| 国产成人aaa在线视频免费观看| 精品免费久久久久国产一区| 水蜜桃亚洲一二三四在线| 青青草a免费线观a| 青青草97国产精品免费观看| 国产AV无码专区亚洲A∨毛片| 67194熟妇在线永久免费观看| 精品国产日韩亚洲一区在线 | 亚洲美女人黄网成人女| 永久免费av无码网站大全| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 亚洲爆乳成av人在线视菜奈实| 精品亚洲一区二区三区在线观看|