• Wcf配置log4net


    1.引用log4net dll文件

    2.创建log4net.config文件并配置文件信息

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <!-- Author:GaoBingBing-->
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <log4net>
        <!--写入到数据库-->
        <appender name="AdoNetAppender_MySql" type="log4net.Appender.AdoNetAppender">
          <!--错误队列数据达到5个才持久化到数据库-->
          <bufferSize value="5" />
          <param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/>
          <param name="ConnectionString" value="server=localhost;database=specialdb;Uid=sa;Pwd=sa;old syntax=yes"/>
          <commandText value="INSERT INTO log_serviceslog(log_datetime,log_thread,log_level,log_logger,log_message) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
          <parameter>
            <parameterName value="@log_date"/>
            <dbType value="DateTime"/>
            <layout type="log4net.Layout.RawTimeStampLayout"/>
            <!--<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss}" />-->
          </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="ALL"/>
          <appender-ref ref="AdoNetAppender_MySql"/>
        </root>
        <logger name="*">
          <level value="ALL" />
          <appender-ref ref="AdoNetAppender_MySql" />
        </logger>
      </log4net>
    </configuration>

    3.在项目根目录下新建CustomServiceHostFactory并继承ServiceHostFactory重写CreateServiceHost方法

       CustomServiceHost继承ServiceHost重写CustomServiceHost方法启动错误日志(需引用System.ServiceModel.Activation)

    using System;
    using System.ServiceModel.Activation;
    using System.ServiceModel;
    
    namespace topicWCFServices
    {
        public class CustomServiceHostFactory : ServiceHostFactory
        {
            protected override ServiceHost CreateServiceHost(
               Type serviceType, Uri[] baseAddresses)
            {
                CustomServiceHost customServiceHost =
                   new CustomServiceHost(serviceType, baseAddresses);
                return customServiceHost;
            }
        }
        public class CustomServiceHost : ServiceHost
        {
            public CustomServiceHost(Type serviceType, params Uri[] baseAddresses)
                : base(serviceType, baseAddresses)
            {
                log4net.Config.XmlConfigurator.Configure();
            }
            protected override void ApplyConfiguration()
            {
                base.ApplyConfiguration();
            }
        }
    }

    4.在AssemblyInfo.cs文件中加上

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

    5.创建错误日志记录文件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    public class TopicServiceLog
    {
        //获取实例
        private static log4net.ILog myLogger = log4net.LogManager.GetLogger("AdoNetAppender_MySql");
    
        //错误级别:Info
        public static void Info(string message)
        {
            myLogger.Info(message);
        }
        //错误级别:Debug
        public static void Debug(string message)
        {
    
            myLogger.Debug(message);
        }
        //错误级别:Warn
        public static void Warn(string message)
        {
    
            myLogger.Warn(message);
        }
        //错误级别:Fatal
        public static void Fatal(string message)
        {
    
            myLogger.Fatal(message);
        }
        //错误级别:Error
        public static void Error(string message)
        {
    
            myLogger.Error(message);
        }
    }

    ok,结束,已测试可以使用

  • 相关阅读:
    IE调试页面总结
    解决XAMPP不能启动Apche服务问题
    WCF与Ajax开发实践系列课程
    Team Foundation 中的错误和事件消息
    设置SVN提交日志必填
    MyBatis.Net 学习手记
    PandorBox 中安装aria2失败的解决办法
    Linux 启动出现 busybox vx.x.xx built-in shell 的问题
    Sql Server 中查询存储过程的修改时间
    ubuntu挂载和挂载NTFS分区命令
  • 原文地址:https://www.cnblogs.com/zhhying/p/4238750.html
Copyright © 2020-2023  润新知