zoukankan      html  css  js  c++  java
  • Log4erl

    http://developerworks.github.io/2011/05/16/erlang-use-log4erl/

    Erlang 使用Log4erl

    all = debug < info < warn < error < fatal < none

    更新历史:

    • 2014-09-25 23:34:31

    功能

    • 支持多日志
    • 当前文件Appender仅支持基于大小的日志文件滚动
    • 支持默认Logger,未指定Logger时系统提供默认Logger
    • 5个预定义的日志级别(debug, info, warn, error, fatal)
    • 一个error_logger的日志处理器
    • 支持用户指定日志级别
    • 支持日志格式化
    • 支持控制台日志
    • 支持smtp formatter
    • 支持XML格式的日志
    • 支持syslog
    • 支持在运行时改变Appender的格式和级别.

    Step1. Checkout from repository

    你可以从 -Google code 或者- Github上获取Log4erl的源代码, Google code上的代码已经旧了,建议从Github上clone 代码

    1
    git clone git://github.com/ahmednawras/log4erl.git log4erl

    Clone a copy from githubClone a copy from github
    Checkout a copy from google codeCheckout a copy from google code
    Log4erl目录结构Log4erl目录结构
    编译Log4erl编译Log4erl

    Step2. 编译

    如图4, 进入Log4erl源代码目录src执行:

    1
    make:all([{outdir, "../ebin"}]).

    Step3. 安装

    你要让Erlang能够找到Log4erl,两种方式

    1. 把整个Log4erl目录复制到$ERLANG_HOME/lib目录下面.看上面第三张图.
    2. 命令行指定
    1
    erl -pz /path/to/log4erl

    Step4. 使用

    1
    application:start(log4erl).

    创建配置文件并调用log4erl:conf(file)初始化

    1
    log4erl:conf("priv/log4erl.conf").

    同样你可以用编程的方式对Log4erl进行配置

    1
    2
    log4erl:add_logger(messages_log).
    log4erl:add_console_appender(messages_log, cmd_logs, {warn, "[%L] %l%n"}).

    好了,现在可以使用它了.

    1
    log4erl:info("Information message").

    Log4erl配置文件格式

    1
    2
    3
    logger [<name>] {
    ...
    }

    <name> 指定了Logger的名称,你可以去任意你喜欢的名字.如果不指定任何名字,那么log4erl将把它作为默认的Logger使用,例如:

    1
    2
    3
    4
    %% default logger
    logger {
    ...
    }

    在一个Logger中,可以有一到多个Appender,例如

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    %% Default logger
    %% it includes a file appender and a console appender
    logger{
    file_appender app2{
    dir = ".",
    level = info,
    file = my_app,
    type = size,
    max = 100000,
    suffix = log,
    rotation = 5,
    format = '[%L] %I %l%n'
    }
    console_appender app1{
    level = warn,
    format = '%T %j [%L] %l%n'
    }
    }

    Appender的配置格式如下

    1
    2
    3
    <appender_type> <name> {
    ...
    }

    在Appender中你可以用’property=value’的格式来设置Appender的属性,属性剑以’,’逗号分隔.每种Appender有不同的属性集合.

    公共属性:

    1
    2
    level   = <Level>     => 日志级别 (例如: warn)
    format = <F> => 输出格式 (查看 'Appenders.txt')

    file_appender

    1
    2
    3
    4
    5
    6
    dir         => 输出路径 (例如: /var/log/my_app)
    file => 日志文件名称 (例如: my_app_log)
    type => size,time. 当前仅实现了基于size的日志滚动
    max => 每次日志滚动的最大文件大小
    suffix => 日志文件后缀 (例如: log)
    rotation => 循环滚动次数,例如为5, 当滚动到第五个日志文件并且日志文件达到指定size的时候就会覆盖前面的日志文件,依次循环

    smtp_appender

    1
    2
    3
    4
    5
    6
    7
    8
    9
    ip          => SMTP服务器IP地址
    port => SMTP服务器端口
    no_auth
    username => 用户名
    password => 密码
    from => 寄信人地址
    to => 收信人地址
    tilte => 邮件标题
    msg => 邮件内容

    syslog_appender

    1
    2
    3
    facility => Facility (例如: ftp)
    host => 发送syslog消息的目标主机 [可选]
    port => syslog 端口[可选]

    新建一个测试项目test
    新建module,test_log,代码如下

    -module(test_log).
    -export([init/0,log/0]).
    init()->
        init_log4erl().
    
    log()->
        log4erl:warn("warn3 msg").
    
    init_log4erl() ->    
        application:start(log4erl),
        log4erl:add_file_appender(app,{"/ide/erlang/workspace/log", "app", {size, 100000}, 10, log, info}),
        log4erl:change_format(app, "%j %T [%L] %l%n"),
        log4erl:add_console_appender(cmd_logs, {info, "%j %T [%L] %l%n"}).
    



    log格式的配置,可以参看log4erl自带的README.txt,和API.txt

    验证
    1)启动 test_log:init().
    2)使用 test_log:log().
    结果:
    2012-05-30 13:57:02.180647 [error] check_pid_is_alive error!

    本文源码:

    https://github.com/developerworks/skypebot/tree/master/src/erlang/log4erl_example

    参考资料:

    1. http://code.google.com/p/log4erl/wiki/Conf_Getting_Started
    2. http://code.google.com/p/log4erl/wiki/Log4erl_Manual_2
  • 相关阅读:
    正则表达式
    文件读写
    列表和数组变量
    Perl基础
    [转] bias和variance
    Chapter 1
    Come back to CNblogs
    SentenceGeneration
    句子生成器
    ant相关操作
  • 原文地址:https://www.cnblogs.com/fvsfvs123/p/4359333.html
Copyright © 2011-2022 走看看