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,

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top