C#编程之log4net使用
白羽 2018-07-10 来源 :网络 阅读 1055 评论 0

摘要:本文将带你了解C#编程之log4net使用,大部分系统,一旦上线之后,就很难再利用专门的测试工具去测试, 这时候就需要有一套强大的日志系统来配合诊断及解决线上的问题,这里主要贴上一段C#中使用delog4net日志API。希望本文对大家学C#/.Net有所帮助。




首先是配置文件:

<?xml version="1.0" encoding="utf-8" ?><configuration>

  <configSections>

    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>

  </configSections>

  <log4net>

    <appender name="ConsoleAppender"

  type="log4net.Appender.ConsoleAppender" >

      <layout type="log4net.Layout.PatternLayout">

        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

      </layout>

    </appender>

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

      <file value="log\logfile.log"/>

      <appendToFile value="true"/>

      <rollingStyle value="Composite"/>

      <datePattern value="yyyyMMdd"/>

      <maxSizeRollBackups value="10"/>

      <maximumFileSize value="1MB"/>

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>

      </layout>

    </appender>

    <root>

      <level value="All"/>

      <appender-ref ref="RollingLogFileAppender"/>

      <appender-ref ref="ConsoleAppender"/>

    </root>

  </log4net>

  <startup>

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />

  </startup></configuration>

然后是对应的类:

using System;using System.Collections.Generic;using System.Text;using System.Diagnostics.Tracing;using System.Diagnostics;using System.CodeDom.Compiler;using log4net;using System.Collections.Concurrent;//指定log4net使用的config文件来读取配置信息//[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Uti_Log4net_CF\Uti_Log4net_CF.config", Watch = true)]namespace Share_Utilities

{

    class Uti_Log4net_C

    {

        private static readonly ConcurrentDictionary<Type, ILog> _loggers = new ConcurrentDictionary<Type, ILog>();

        private static readonly ConcurrentDictionary<String, ILog> _str_loggers = new ConcurrentDictionary<String, ILog>();

        /// <summary>

        /// 获取记录器

        /// </summary>

        /// <param name="source"></param>

        /// <returns></returns>

        private static ILog GetLogger(String source)

        {

            if (_str_loggers.ContainsKey(source))

            {

                return _str_loggers[source];

            }

            else

            {

                ILog logger = LogManager.GetLogger(source);

                _str_loggers.TryAdd(source, logger);

                return logger;

            }

        }

 

        /* Log a message object */

 

        /// <summary>

        /// 获取记录器

        /// </summary>

        /// <param name="source"></param>

        /// <returns></returns>

        private static ILog GetLogger(Type source)

        {

            if (_loggers.ContainsKey(source))

            {

                return _loggers[source];

            }

            else

            {

                ILog logger = LogManager.GetLogger(source);

                _loggers.TryAdd(source, logger);

                return logger;

            }

        }

 

        /* Log a message object */

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Debug(Type source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsDebugEnabled)

                logger.Debug(message);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Debug(object source, object message)

        {

            Debug(source.GetType(), message);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Debug(Type source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsDebugEnabled)

                logger.DebugFormat(format, args);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Debug(object source, string format, params object[] args)

        {

            Debug(source.GetType(), format, args);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Info(Type source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsInfoEnabled)

                logger.InfoFormat(format, args);

        }

 

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Info(object source, string format, params object[] args)

        {

            Info(source.GetType(), format, args);

        }

 

        /// <summary>

        /// 关键信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Info(Type source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsInfoEnabled)

                logger.Info(message);

        }

 

        /// <summary>

        /// 关键信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Info(object source, object message)

        {

            Info(source.GetType(), message);

        }

 

 

        /// <summary>

        /// 警告信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Warn(Type source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsWarnEnabled)

                logger.Warn(message);

        }

 

        /// <summary>

        /// 警告信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Warn(object source, object message)

        {

            Warn(source.GetType(), message);

        }

 

        /// <summary>

        /// 警告信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Warn(Type source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsWarnEnabled)

                logger.WarnFormat(format, args);

        }

 

        /// <summary>

        /// 警告信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Warn(object source, string format, params object[] args)

        {

            Warn(source.GetType(), format, args);

        }

 

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Error(Type source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsErrorEnabled)

                logger.Error(message);

        }

 

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Error(object source, object message)

        {

            Error(source.GetType(), message);

        }

 

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Error(Type source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsErrorEnabled)

                logger.ErrorFormat(format, args);

        }

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Error(object source, string format, params object[] args)

        {

            Error(source.GetType(), format, args);

        }

 

 

        /// <summary>

        /// 失败信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Fatal(Type source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsFatalEnabled)

                logger.Fatal(message);

        }

 

        /// <summary>

        /// 失败信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Fatal(object source, object message)

        {

            Fatal(source.GetType(), message);

        }

 

        /// <summary>

        /// 失败信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Fatal(Type source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsFatalEnabled)

                logger.FatalFormat(format, args);

        }

 

        /// <summary>

        /// 失败信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Fatal(object source, string format, params object[] args)

        {

            Fatal(source.GetType(), format, args);

        }

 

        /* Log a message object and exception */

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Debug(object source, Exception exception,  object message)

        {

            GetLogger(source.GetType()).Debug(message, exception);

        }

 

        /// <summary>

        /// 关键信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Info(object source, Exception exception, object message)

        {

            GetLogger(source.GetType()).Info(message, exception);

        }

 

        /// <summary>

        /// 警告信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Warn(object source, Exception exception,  object message)

        {

            GetLogger(source.GetType()).Warn(message, exception);

        }

 

 

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Error(object source, Exception exception, object message)

        {

            GetLogger(source.GetType()).Error(message, exception);

        }

 

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Fatal(object source, Exception exception, object message)

        {

            GetLogger(source.GetType()).Fatal(message, exception);

        }

 

 

        /* Type String source */

        /* Log a message object */

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Debug(String source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsDebugEnabled)

                logger.Debug(message);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Debug(String source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsDebugEnabled)

                logger.DebugFormat(format, args);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Info(String source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsInfoEnabled)

                logger.InfoFormat(format, args);

        }

 

        /// <summary>

        /// 关键信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Info(String source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsInfoEnabled)

                logger.Info(message);

        }

 

        /// <summary>

        /// 警告信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Warn(String source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsWarnEnabled)

                logger.Warn(message);

        }

 

        /// <summary>

        /// 警告信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Warn(String source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsWarnEnabled)

                logger.WarnFormat(format, args);

        }

 

 

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Error(String source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsErrorEnabled)

                logger.Error(message);

        }

 

        /// <summary>

        /// 错误信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="args"></param>

        public static void Error(String source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsErrorEnabled)

                logger.ErrorFormat(format, args);

        }

 

        /// <summary>

        /// 失败信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Fatal(String source, object message)

        {

            ILog logger = GetLogger(source);

            if (logger.IsFatalEnabled)

                logger.Fatal(message);

        }

 

        /// <summary>

        /// 失败信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        public static void Fatal(String source, string format, params object[] args)

        {

            ILog logger = GetLogger(source);

            if (logger.IsFatalEnabled)

                logger.FatalFormat(format, args);

        }

 

        /* Log a message object and exception */

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Debug(String source, Exception exception, object message)

        {

            GetLogger(source).Debug(message, exception);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Info(String source, Exception exception, object message)

        {

            GetLogger(source).Debug(message, exception);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Error(String source, Exception exception, object message)

        {

            GetLogger(source).Debug(message, exception);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Warn(String source, Exception exception, object message)

        {

            GetLogger(source).Debug(message, exception);

        }

 

        /// <summary>

        /// 调试信息

        /// </summary>

        /// <param name="source"></param>

        /// <param name="message"></param>

        /// <param name="exception"></param>

        public static void Fatal(String source, Exception exception, object message)

        {

            GetLogger(source).Debug(message, exception);

        }

 

    }

}

 

 


以上就介绍了C#.NET的相关知识,希望对C#.NET有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C#.NET频道!

 


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程