0

Log4cxxを使用してWindowsイベントログにログメッセージを送信するにはどうすればよいですか?

複数のプロセスからそれを行う場合、それはプロセスセーフですか?

ええと:引退した忍者に感謝します...はい、動作します...[log4j.propertiesファイル]

# Set root logger level to DEBUG and its only appender to EVENTLOG.
log4j.rootLogger=DEBUG, EVENTLOG

# EVENTLOG.is set to be a NTEventLogAppender

log4j.appender.EVENTLOG=org.apache.log4j.net.NTEventLogAppender
log4j.appender.EVENTLOG.server=127.0.0.1
log4j.appender.EVENTLOG.source=SomeApp

# EVENTLOG uses PatternLayout.
log4j.appender.EVENTLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.EVENTLOG.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

コードで使用するだけです

 #include "stdafx.h"
#include <windows.h>
#include <log4cxx/logger.h>
#include "log4cxx/propertyconfigurator.h"

using namespace log4cxx;

LoggerPtr logger(Logger::getLogger( "main"));

int  main()
{

    PropertyConfigurator::configure("log4j.properties");


    LOG4CXX_ERROR(logger, "Oh come on be serious");

    system("PAUSE");

    return 0;
}
4

2 に答える 2

1

私は数年前にlog4cxxバージョン0.10.0でそれを行うことができました。最近log4cxxを使用していないので、変更された場合はお詫び申し上げます。

これが私が使用していた設定です:

# EVENTLOG
log4j.appender.EVENTLOG=org.apache.log4j.net.NTEventLogAppender
log4j.appender.EVENTLOG.server=127.0.0.1
log4j.appender.EVENTLOG.source=SomeApp
log4j.appender.EVENTLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.EVENTLOG.layout.ConversionPattern=[%c] %-5p: %m
log4j.appender.EVENTLOG.Threshold=ERROR
于 2012-01-26T09:26:37.843 に答える
0

log4cxxにはWindowsイベントログバックエンドがないようです。自分で作成する必要があります。Windowsイベントログの詳細については、たとえばこれをお読みください。

イベントログは、非常に明白な理由でプロセスセーフである必要があります。同時に多くのプロセスがイベントログに書き込む可能性があります。

于 2012-01-26T09:15:32.057 に答える