如何在没有config

时间:2016-02-29 14:59:42

标签: c# logging

我对log4net有疑问。如何在C#中使用ADOAppender类。我必须捕获数据库中的日志。我已经尝试通过在配置文件中配置。并且工作正常。我需要在代码中配置它。

我尝试使用以下代码。并且无法正常工作

        Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

        MemoryAppender memory = new MemoryAppender();
        AdoNetAppender adoappender = new AdoNetAppender();
        AdoNetAppenderParameter adoapppar = new AdoNetAppenderParameter();
        AdoNetAppenderParameter adoapppar1 = new AdoNetAppenderParameter();
        AdoNetAppenderParameter adoapppar2 = new AdoNetAppenderParameter();
        AdoNetAppenderParameter adoapppar3 = new AdoNetAppenderParameter();
        AdoNetAppenderParameter adoapppar4 = new AdoNetAppenderParameter();
        AdoNetAppenderParameter adoapppar5 = new AdoNetAppenderParameter();

        PatternLayout patternLayout = new PatternLayout();

        adoappender.ConnectionString = "Data Source=.;Initial Catalog=xmltest;Integrated Security=false;User ID=sa;Password=dbadmin;";
        adoappender.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
        adoappender.ReconnectOnError = true;

        adoappender.CommandType = CommandType.StoredProcedure;
        adoappender.CommandText = "DBO.splog4nettest";
        adoappender.BufferSize = 1;

        adoapppar.ParameterName = "@log_date";
        adoapppar.DbType = DbType.DateTime;
        adoapppar.Layout = new Layout2RawLayoutAdapter(patternLayout);
        patternLayout.ConversionPattern = "%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}";
        patternLayout.ActivateOptions();
        adoappender.AddParameter(adoapppar);

        adoapppar1.ParameterName = "@thread";
        adoapppar1.DbType = DbType.String;
        adoapppar1.Size = 255;
        adoapppar1.Layout = new Layout2RawLayoutAdapter(patternLayout);
        //adoapppar.Layout = (IRawLayout)patternLayout;
        patternLayout.ConversionPattern = "%thread";
        patternLayout.ActivateOptions();
        adoappender.AddParameter(adoapppar1);

        adoapppar2.ParameterName = "@log_level";
        adoapppar2.DbType = DbType.String;
        adoapppar2.Size = 50;
        adoapppar2.Layout = new Layout2RawLayoutAdapter(patternLayout);
        //adoapppar.Layout = (IRawLayout)patternLayout;
        patternLayout.ConversionPattern = "%level";
        patternLayout.ActivateOptions();

        memory.ActivateOptions();
        hierarchy.Root.AddAppender(memory);

        hierarchy.Root.Level = Level.Info;
        hierarchy.Configured = false;

        log4net.Config.BasicConfigurator.Configure();

1 个答案:

答案 0 :(得分:0)

您还没有将AdoAppender添加到Root

hierarchy.Root.AddAppender(adoappender);