我正在尝试学习如何从java eclipse登录到事件查看器,并且阅读了api,各种站点以及有关堆栈溢出的类似问题。

但是当我遵循这些步骤时,我总是会得到:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Ljava/lang/String;Ljava/lang/String;)I
at org.apache.log4j.nt.NTEventLogAppender.registerEventSource(Native Method)
at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:79)
at org.apache.log4j.nt.NTEventLogAppender.<init>(NTEventLogAppender.java:65)


消息来源应该是什么?

如果有人可以展示这样一个程序的完整示例,那将是极好的。谢谢,请尽可能详细。

我现在的代码是:

package Output;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.nt.NTEventLogAppender;

public class EventLog {
    public static void main(String[] args)
    {

        Logger myLogger = Logger.getLogger(EventLog.class);

        String mySource = "the source";
        PatternLayout myLayout = new PatternLayout("[%c][%l][%p][%thread]: %m%n");

        NTEventLogAppender eventLogAppender= new NTEventLogAppender(mySource,myLayout);

        ConsoleAppender consoleAppender= new ConsoleAppender(myLayout);

        myLogger.addAppender(consoleAppender);
        myLogger.addAppender(eventLogAppender);

        myLogger.setLevel(Level.WARN);

        myLogger.fatal("Come on print");
    }
}

最佳答案

我也正在研究如何做到这一点。我没有足够的时间来测试此答案,但据我所读,错误是由于在正确的位置没有正确的.dll文件引起的。

“不要忘记将NTEventLogAppender.dll,NTEventLogAppender.amd64.dll,NTEventLogAppender.ia64.dll或NTEventLogAppender.x86.dll适当地放在Windows系统PATH上的目录中。否则,您将得到一个Java。 lang.UnsatisfiedLinkError”


http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/nt/NTEventLogAppender.html
http://logging.apache.org/log4j/1.2/faq.html

10-06 05:51