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
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.