Pergunta

Eu tenho uma aplicação PHP que contém vários módulos e vários ajustes dentro de cada módulo. Eu gostaria de activar o registo utilizando log4php, mas cada módulo individual tem configurações diferentes (ie. Nível de log, arquivo de log, etc). Algumas dessas configurações precisam ser alteradas em tempo real por usuários finais (nível log), e eu gostaria de armazenar essas propriedades no banco de dados.

Agora posso definir loglevel dinamicamente. Eu não posso determinar como definir outras propriedades dinamicamente embora. Documentação sobre a configuração do log4php é feito quase que exclusivamente via arquivos de propriedades / XML - embora ele diz que todas as configurações podem ser alteradas por meio de programação.

Algum feito algo assim? Se assim for, como posso fazê-lo? Eu olhei através da documentação em http://incubator.apache.org/log4php/index. html , mas eu preciso de mais ajuda.

Para esclarecer - eu não quero para arquivos de configuração utilização, como os usuários finais não terá acesso direto a estes. I irá fornecer um front-end para mudar certas configurações de log, e todas as configurações serão armazenadas no banco de dados.

Foi útil?

Solução

Olhando para os Docs API me diz que eles estão usando configuração Adaptadores e um padrão de estratégia para configurar os madeireiros. Os adaptadores têm um único método configure , que é chamado pelo principal logger. Há um LoggerConfiguratorPhp , que irá ler / incluir um arquivo PHP retornando uma matriz PHP regular. Eu poderia imaginar isso poderia ser facilmente modificado para aceitar uma matriz retornado do banco de dados em vez disso. Ter um olhar para o código-fonte desta classe de ponto de partida. O que você vai querer criar um LoggerConfiguratorDB, que você pode então passar para a classe principal Logger assim:

$configurator = dirname(__FILE__).'/../resources/configurator_db.php';
Logger::configure( $configurator, 'LoggerConfiguratorDb');

Eu nunca trabalhei com Log4Php e este é apenas assumindo, olhando para a API. Eu não tenho absolutamente nenhum indício, como o novo adaptador teria a aparência. Mas talvez isso faz com que você na direção certa.

Se você conseguir chegar a algo por que não doá-lo para o projeto:)

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