• log4net 写日志到 Sql server 数据库


        本示例采用vs2010,原代码下载 /Files/zycblog/log4netDB.rar

    新建数据库表MyLog ,脚本为

    1 CREATE TABLE [dbo].[Log](
    2     [Id] [int] IDENTITY(1,1NOT NULL,
    3     [Date] [datetime] NOT NULL,
    4     [Thread] [varchar](255NOT NULL,
    5     [Level] [varchar](50NOT NULL,
    6     [Logger] [varchar](255NOT NULL,
    7     [Message] [varchar](4000NOT NULL,
    8     [Exception] [varchar](2000NULL
    9 ON [PRIMARY]

     2 在项目AssemblyInfo.cs文件里新增一行

    [assembly: log4net.Config.XmlConfiguratorAttribute(Watch = true)]

    3 在项目config文件里新增如下节

    <configSections>
        
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      
    </configSections>
         
    <log4net debug="false">
           
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
            
    <param name="File" value="c:\Log\DBLog.txt" />
            
    <param name="AppendToFile" value="true" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
            
    </layout>
          
    </appender>
        
        
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
          
    <bufferSize value="10"/>
          
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
          
    <connectionString value="server=192.168.1.100;database=ZYC;user id=sa;password=password"/>
          
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
          
    <parameter>
            
    <parameterName value="@log_date"/>
            
    <dbType value="DateTime"/>
            
    <layout type="log4net.Layout.RawTimeStampLayout"/>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@thread"/>
            
    <dbType value="String"/>
            
    <size value="255"/>
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%thread"/>
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@log_level"/>
            
    <dbType value="String"/>
            
    <size value="50"/>
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%level"/>
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@logger"/>
            
    <dbType value="String"/>
            
    <size value="255"/>
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%logger"/>
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@message"/>
            
    <dbType value="String"/>
            
    <size value="4000"/>
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%message"/>
            
    </layout>
          
    </parameter>
          
    <parameter>
            
    <parameterName value="@exception"/>
            
    <dbType value="String"/>
            
    <size value="2000"/>
            
    <layout type="log4net.Layout.ExceptionLayout"/>
          
    </parameter>
        
    </appender>
           
    <root>
             
    <level value="DEBUG" />
             
    <appender-ref ref="ADONetAppender" />
           
    </root>

    其中

            <root>

             <level value="DEBUG" />

             <appender-ref ref="ADONetAppender" />

           </root>

    节的appender-ref ADONetAppender,对应上面的配置是连接到数据库,俱体内容看config文件就可以知道连接串,及对应数据库表信息参数

    4 测试代码为

     private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyLog));

          public static void LogInfo()

            {

                log.Info("log¨??");

            }

        至此log信息就新增到数据库了

    注意事项 

           引用log4net.dll

           引用System.Data.dll

  • 相关阅读:
    Android 官网提供的Custom-view 编译出错--error: No resource identifier found for attribute
    杀死进程 kill -9
    自定义控件优化
    linux 定时执行任务 crontab
    Android 悬浮窗 WindowManager WindowManager.LayoutParamas
    IntellijIDEA 使用技巧
    [转]Linux 分区 swap
    网络请求 图片请求
    Android app version code and name
    Android发送请求到不同的Servlet,但都是一个Servlet处理
  • 原文地址:https://www.cnblogs.com/zycblog/p/1808147.html
Copyright © 2020-2023  润新知