3

こんにちは私はXML構成を使用せずにlog4netをセットアップしようとしています:

    public void InitLogger()
    {
        //Create exception log file if it haven't been created
        var exceptionLogFile = new FileInfo(System.Configuration.ConfigurationManager.AppSettings["ExceptionLogFilePath"]);
        if (!exceptionLogFile.Exists)
        {
            exceptionLogFile.Create();
        }
        //configure log4net
        var smtpAppender = new SmtpAppender
                               {
                                   SmtpHost = "",
                                   Authentication = SmtpAppender.SmtpAuthentication.None,
                                   BufferSize = 512,
                                   From = "",
                                   To = "",
                                   Layout = new PatternLayout(""),
                                   Lossy = true,
                                   Evaluator = new LevelEvaluator(Level.Error)
                               };

        var fileAppender = new FileAppender
                               {
                                   File = System.Configuration.ConfigurationManager.AppSettings["ExceptionLogFilePath"],
                                   AppendToFile = true,
                                   Layout = new PatternLayout(""),
                                   LockingModel = new FileAppender.MinimalLock() //use the minimal locking model that allows multiple processes to write to the same file
                               };


        BasicConfigurator.Configure(smtpAppender);
    }

私の問題は、2つのアペンダー(smtpとfile)を使用したいということです。使用する

BasicConfigurator.Configure(smtpAppender);

最初のものを設定できますが、ファイルアペンダーも設定する必要があります。あなたはそれをする理由を知っていますか?

御時間ありがとうございます :)

4

1 に答える 1

1

このシナリオでは、ロガーのインスタンスを取得してから、アペンダーを追加します。その後、リポジトリを設定するだけです。つまり、

VBの場合:

Public Class Test  
    Private Shared ReadOnly _logger As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType)         
Sub InitLogger()
        Dim logger = CType(_logger.Logger, log4net.Repository.Hierarchy.Logger)
        Dim fileAppender = New log4net.Appender.FileAppender() With { _
         .File = "", _
         .AppendToFile = True, _
         .Layout = New log4net.Layout.PatternLayout(""), _
         .LockingModel = New log4net.Appender.FileAppender.MinimalLock() _
        }

        logger.AddAppender(fileAppender)

        Dim repository As log4net.Repository.ILoggerRepository = log4net.LogManager.GetRepository()
        log4net.Config.BasicConfigurator.Configure(repository)
    End Sub
End Class

C#の場合:

public class Test  
{  
    private static readonly log4net.ILog _logger = log4net.LogManager.GetLogger(System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType);  
    public void InitLogger()
    {
        var logger = (log4net.Repository.Hierarchy.Logger)_logger.Logger;

        var fileAppender = new log4net.Appender.FileAppender {
            File = "",
            AppendToFile = true,
            Layout = new log4net.Layout.PatternLayout(""),
            LockingModel = new log4net.Appender.FileAppender.MinimalLock()
        };

        logger.AddAppender(fileAppender);

        log4net.Repository.ILoggerRepository repository = log4net.LogManager.GetRepository();
        log4net.Config.BasicConfigurator.Configure(repository);
    }
}
于 2012-08-09T17:13:22.347 に答える