我在我的Rails 2.3.8项目中添加了log4r。我想创建2个日志文件。
以下是每个记录器的yml配置文件
error_config.yml (errors.log)
# *** YAML2LOG4R ***
error_config:
# define all pre config ...
pre_config:
custom_levels:
- DEBUG
- INF
- PRT
- WRN
- ERR
- FAT
global:
level: DEBUG
root :
level: DEBUG
parameters:
- name : x
value : aaa
- name : y
value : bbb
# define all loggers ...
loggers:
- name : mylogger
level : DEBUG
additive : 'false'
trace : 'false'
outputters:
- stderr
- logfile
# define all outputters (incl. formatters)
outputters:
- type : StderrOutputter
name : stderr
level : DEBUG
only_at :
- INF
- WRN
- FAT
formatter:
date_pattern: '%y%m%d %H:%M:%S'
pattern : '%d %l: %m '
type : PatternFormatter
- type : DateFileOutputter
name : logfile
level : DEBUG
date_pattern: '%Y%m%d'
trunc : 'false'
dirname : "/home/sameera/workspace/project/log"
filename : "errors.log"
formatter :
date_pattern: '%m/%d/%Y %H:%M:%S'
pattern : '%d %l - %m'
type : PatternFormatter
application_config.yml (application.log)
# *** YAML2LOG4R ***
application_config:
# define all pre config ...
pre_config:
custom_levels:
- DEBUG
- INF
- PRT
- WRN
- ERR
- FAT
global:
level: DEBUG
root :
level: DEBUG
parameters:
- name : x
value : aaa
- name : y
value : bbb
# define all loggers ...
loggers:
- name : application
level : DEBUG
additive : 'false'
trace : 'false'
outputters:
- stderr
- logfile
# define all outputters (incl. formatters)
outputters:
- type : StderrOutputter
name : stderr
level : DEBUG
only_at :
- INF
- WRN
- FAT
formatter:
date_pattern: '%y%m%d %H:%M:%S'
pattern : '%d %l: %m '
type : PatternFormatter
- type : DateFileOutputter
name : application
level : DEBUG
date_pattern: '%Y%m%d'
trunc : 'false'
dirname : "/home/sameera/workspace/project/log"
filename : "application.log"
formatter :
date_pattern: '%m/%d/%Y %H:%M:%S'
pattern : '%d %l - %m'
type : PatternFormatter
以下是初始化两个记录器的代码
h = YAML.load(File.open("config/error_config.yml"))
app_log = YAML.load(File.open("config/application_config.yml"))
log_cfg = YamlConfigurator
log_cfg['TEST'] = 'foobar'
log_cfg.decode_yaml h['error_config']
applog_cfg = YamlConfigurator
applog_cfg['TEST'] = 'foobar'
applog_cfg.decode_yaml app_log['application_config']
$ERRORLOG = Log4r::Logger['error_config']
$APPLICATION = Log4r::Logger['application_config']
$ERRORLOG.debug "info message"
$APPLICATION.debug "info message"
此代码工作正常,但它会在errors.log中打印这两个消息(我希望在application.log上打印第二条消息)。
是否有通过一个log4r实例拥有2个日志文件的简单方法?
答案 0 :(得分:1)
我注意到你的“error_config.yml”文件将输出级别定义为“debug”。
loggers:
- name : mylogger
level : DEBUG
也许你想让它成为“警告”?
loggers:
- name : mylogger
level : WARN
P.S。 ^ _ ^命名对流很重要。请对您的代码的读者友好。 (通常是你自己)。哪个更清楚?
h = YAML.load(File.open("config/error_config.yml"))
error_config = YAML.load(File.open("config/error_config.yml"))