Log4r :registrador de herança, configuração yaml, as alternativas?
-
27-09-2019 - |
Pergunta
Eu sou muito novo para ruby ambientes e eu estava procurando por um bom registo de framework para utilizar o meu ruby e rails aplicações.
Em minha experiência anterior, eu ter utilizado com sucesso o log4j e log4p (o perl de porta) e estava esperando o mesmo nível de usabilidade (e maturidade) com log4r.
No entanto, devo dizer que há uma série de coisas que não são claras no log4r quadro.
1 Registrador De Herança
O registrador de herança não parece ser gerenciado em tudo !
Se eu declarar um madeireiro chamado 'myapp" e, em seguida, tentar obter um registrador de nome de 'myapp::engine', a pesquisa vai terminar com um NameError.
Eu esperaria que o framework retorna a raiz logger de acordo com o esquema de atribuição de nomes e a usar o "myapp' logger.
Q1 :Claro, eu posso contornar isso e gerir os nomes por mim com um método de pesquisa, no entanto existe uma maneira mais limpa de o fazer sem qualquer codificação extra ?
2 configuração YAML
Segunda coisa que me confunde é a configuração yaml.No log4r site há literalmente nenhuma informação sobre este sistema, o doc links em frente à falta de páginas, então tudo que eu posso encontrar informações sobre está contido no diretório de exemplos da gema.
Eu estava muito confuso com o fato de que a configuração yaml deve conter o pre_config seção, e que eu preciso para definir meus próprios níveis.
Se eu remover o pre_config secção, ou substituir todos os "personalizado" níveis do padrão ( debug, info, warn, fatal ) , a exemplo vai lançar o seguinte erro :
log4r/yamlconfigurator.rb:68:in `decode_yaml': Log level must be in 0..7 (ArgumentError)
Portanto, parece haver nenhuma maneira de usar um simples arquivo de onde nós apenas declarar os madeireiros e appenders para o quadro.
Q2 :Eu realmente acho que eu perdi alguma coisa e que tem de ser uma forma de proporcionar uma simples yaml conf arquivo.Você tem alguma exemplos de tal uso ?
3 Variáveis de substituição no arquivo XML
Q3 :A configuração Yaml sistema parece fornecer um recurso no entanto, eu era incapaz de encontrar um recurso semelhante com arquivos XML.Qualquer idéias ?
4 Alternativas ?
Devo dizer que estou muito decepcionado com o nível de recurso e o prazo de vencimento da log4r comparado com o log4j e outros log4j portas.
Me deparo com esse quadro com um plano de fundo sólido do log de APIs em outras línguas, e encontro-me a trabalhar em torno de todos os tipos para fazer apenas o 'básico' em execução em um "mundo real"da aplicação.
Por isso, quero dizer um aplicativo complexo, composto de várias gemas, o console de processamento de scripts/aplicativos, e rails web front-end, onde a configuração deve ser mutualized e onde podemos fazer o uso intensivo de espaços de nomes e de herança.
Eu realizei algumas pesquisas a fim de encontrar algo mais adequado ou maduros, mas não foi possível encontrar qualquer coisa semelhante.
P4 :Vocês sabem de algum (grave) alternativas para log4r framework que pode ser utilizado em uma empresa de classe app ?
Graças a ler tudo isso !
Eu realmente aprecio qualquer ponteiros,
Com Os Melhores Cumprimentos,
Solução
Eu concordo que o log4r documentação é bastante pobre.Nós estamos usando ele embora e ele nos serve muito bem, vamos dizer que um enterprisey app.
Não estamos usando o registrador de herança para que eu possa te ajudar com isso, e também não sei a respeito de qualquer software alternativo, mas:
Aqui está o código que usamos para ler a configuração YAML (na verdade, acho que estamos a passar como já carregado em um Hash), ele também suporta a substituição de variáveis:
require 'log4r'
require 'log4r/yamlconfigurator'
y = "log4r_config:
# define all loggers ...
loggers:
- name : production
level : INFO
trace : 'false'
outputters:
- stdout
# define all outputters (incl. formatters)
outputters:
- type : StdoutOutputter
name : stdout
formatter:
date_pattern: '%Y-%m-%d %H:%M:%S'
pattern : '%d %l: #\{TEST\} %m '
type : PatternFormatter"
h = YAML.load y
log_cfg = YamlConfigurator
log_cfg['TEST'] = 'foobar'
log_cfg.decode_yaml h['log4r_config']
@log = Logger['production']
@log.info 'test'
#=>2010-05-20 14:36:32 INFO: foobar test
Outras dicas
Como eu ainda estou 'luta' com a configuração yaml eu cavei um pouco no código de configuração XML e encontrei a resposta para Q3 concenrning o param subsitution.
Na verdade, ele funciona de uma forma muito semelhante para o yaml coisas, tudo que você precisa é referência os parâmetros com #{VARNAME} no arquivo xml:
<filename>#{logdir}/processing.log</filename>
e para defini-las no configurador antes de ler o arquivo xml :
Log4r::Configurator['logdir']=log_dir_param
...
Log4r::Configurator.load_xml_file(conf_file_xml)
Quando é mencionado que o log4r documentação está realmente em má forma ( lotes de erro 404) eu estava falando sobre o doc disponível no rubyforge ...
Eu, finalmente, acabou por olhar para o sourceforge projeto e encontrado um 'bom' (em ruby way) doc http://log4r.sourceforge.net/rdoc.