Я добавил log4r в свой проект Rails 2.3.8. Я хочу создать 2 файла журнала.
- Для входа в приложение (сообщения INFO) (application.log)
- Сообщения об ошибках (любые сообщения, кроме информационных сообщений) (errors.log)
Ниже приведены мои файлы конфигурации 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).
Есть ли простой способ иметь 2 файла журнала через один экземпляр log4r?