Pergunta

Eu tenho um aplicativo C ++ que registra a alguns log4cxx arquivo usando (rollingFile appender). Quero para entrar no mesmo arquivo, ao mesmo tempo, de outro módulo escrito em C #; assim que eu configurado log4net usar o mesmo arquivo, mas eu não posso obter as novas mensagens. Se eu desativar o registro de c ++, eu posso ver c # mensagens. Então eu acho que é uma questão de bloqueio, e parecia uma opção de configuração para dizer log4cxx para não bloquear o arquivo. Eu vim a modelo MinimalLock para log4net, mas não consegui encontrar nada no log4cxx ... Alguém sabe se isso poderia ser feito, e como?

Agradecemos antecipadamente,

Ernesto Cullen

Foi útil?

Solução

Eu acho que você pode executar em problemas de concorrência e de contenção não importa qual configuração que você usar, contanto que você está tentando ter log dois processos diferentes para o mesmo arquivo.

Você deve olhar para o envio de eventos de registro de ambos os processos para um terceiro local, centralizado - dar uma olhada em RemotingAppender em log4net, eu assumo log4cxx tem algo semelhante.

Outras dicas

Mesmo se a questão é bastante antigo (e marcada como respondida) e você está provavelmente já terminou com seu projeto:

log4net e log4cxx são framworks madeireiras distintas que não sabem uns dos outros para que você não pode configurá-los para escrever para o mesmo arquivo. Apenas um dos framworks terá o arquivo aberto para escrita, o que foi o primeiro.

O que eu fiz em uma situação semelhante (um aplicativo herdado c ++ com o costume registrando um módulo de um novo c # usando log4net) é criar um personalizado log4net appender que encaminha vestígios na estrutura de log de idade. No projeto onde eu estava envolvido o antigo código C ++ teve um Windows COM Interface para escrever mensagens de log que o appender personalizado usado.

Outra forma seria usar C ++ / CLI para criar o appender personalizado.

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