我已经编写了一个.NET DLL,它是使用COM互操作从另一个应用程序中调用的。我想使用log4net,但是我需要在运行时从其他应用程序指定日志文件的位置。

我一直以最简单的方式为WinForms项目使用log4net,但由于DLL项目没有app.config,并且我的调用应用程序也没有(即使不是.NET),我也试图阅读一些有关log4net的工作原理,并尝试完全不使用.config文件进行设置。

我已经到了可以编译的阶段,这有点符合我对log4net的细微了解,但是它没有写入日志文件。

这是到目前为止的内容,谁能指出我的明显错误/误解,或者告诉我一种从dll登录的更好方法?

    private log4net.Core.ILogger _ilogger;
    private ILog _logger;

    public void Initialize(String LogFileName)
    {
        log4net.Repository.ILoggerRepository Repo = null;
        try {
            Repo = log4net.LogManager.GetRepository(Assembly.GetExecutingAssembly().FullName);

        } catch (log4net.Core.LogException) {
            //ignore, domain not yet created
        }

        if (Repo == null) {
            Repo = log4net.LogManager.CreateRepository(Assembly.GetExecutingAssembly().FullName);

            log4net.Appender.RollingFileAppender appender = new log4net.Appender.RollingFileAppender();
            appender.Layout = new log4net.Layout.PatternLayout("%d - %m%n");
            appender.File = LogFileName;
            appender.MaxSizeRollBackups = 10;
            appender.MaximumFileSize = "100MB";
            appender.AppendToFile = true;
            appender.Threshold = log4net.Core.Level.Debug; //NEW: set level to Debug
            appender.ActivateOptions();

            Repo.Threshold = log4net.Core.Level.Debug; //NEW: set level to Debug

            log4net.Config.BasicConfigurator.Configure(Repo, appender);
        }

       // This doesn't seem to create the interface I need for logging
        _ilogger = Repo.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName);

       // This doesn't seem to write to the log file for some reason.
        _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName);
        _logger.Debug("Application started");
    }


谢谢!

最佳答案

编辑-更新。重读问题。看来您只需要call the overloaded version of this(传递配置文件的详细信息)-您基本上只想从COM DLL中配置日志记录?

我开玩笑地用谷歌搜索log4com和found this。我没有用过,但可能值得
看!

关于c# - log4net-记录通过COM互操作调用的dll,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1410352/

10-09 17:53
查看更多