日志
发布日期:2022-07-08 02:55:49 浏览次数:46 分类:技术文章

本文共 11260 字,大约阅读时间需要 37 分钟。

1.写入文本txt日志

创建一个StreamWriter,将文件写入进去

public static void WriteLog(string msg)    {        System.IO.StreamWriter sw = null;        if (sw != null)        {            try            {                //同一天同一类日志以追加形式保存,如果要一个小时新增一个日志文件,只需要改成yyyyMMddHH即可                sw = System.IO.File.AppendText(                    LogPath + LogFielPrefix + "_" +                    DateTime.Now.ToString("yyyyMMdd") + ".Log"                    );                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + msg);            }            catch            { }            finally                 {                sw.Close();            }        }
View Code

2.利用Log4net实现日志,需要引用Log4net.dll

1.首先创建一个ILog接口

using System;namespace WQB.Logging{    ///     /// The ILog interface is used by the client to log messages.    ///     /// 
Use the
class to programmatically assign logger implementations.
public interface ILog { bool IsDebugEnabled { get; } bool IsInfoEnabled { get; } bool IsWarnEnabled { get; } bool IsErrorEnabled { get; } bool IsFatalEnabled { get; } void Debug(object message); void Debug(object message, Exception exception); void DebugFormat(string format, object arg0); void DebugFormat(string format, object arg0, object arg1); void DebugFormat(string format, object arg0, object arg1, object arg2); void DebugFormat(string format, params object[] args); void DebugFormat(IFormatProvider provider, string format, params object[] args); void Info(object message); void Info(object message, Exception exception); void InfoFormat(string format, object arg0); void InfoFormat(string format, object arg0, object arg1); void InfoFormat(string format, object arg0, object arg1, object arg2); void InfoFormat(string format, params object[] args); void InfoFormat(IFormatProvider provider, string format, params object[] args); void Warn(object message); void Warn(object message, Exception exception); void WarnFormat(string format, object arg0); void WarnFormat(string format, object arg0, object arg1); void WarnFormat(string format, object arg0, object arg1, object arg2); void WarnFormat(string format, params object[] args); void WarnFormat(IFormatProvider provider, string format, params object[] args); void Error(object message); void Error(object message, Exception exception); void ErrorFormat(string format, object arg0); void ErrorFormat(string format, object arg0, object arg1); void ErrorFormat(string format, object arg0, object arg1, object arg2); void ErrorFormat(string format, params object[] args); void ErrorFormat(IFormatProvider provider, string format, params object[] args); void Fatal(object message); void Fatal(object message, Exception exception); void FatalFormat(string format, object arg0); void FatalFormat(string format, object arg0, object arg1); void FatalFormat(string format, object arg0, object arg1, object arg2); void FatalFormat(string format, params object[] args); void FatalFormat(IFormatProvider provider, string format, params object[] args); }}
View Code

2.创建一个ILogFactory日志工厂接口

using System;namespace WQB.Logging{    ///     /// Implement this interface to instantiate your custom ILog implementation    ///     public interface ILogFactory    {        ILog GetLogger(string name);        ILog GetLogger(Type type);    }}
View Code

3.创建一个Log4net的工厂Log4NetFactory实现日志工厂接口ILogFactory

using System;namespace WQB.Logging{    ///     /// log4net log factory    ///     public class Log4NetFactory : ILogFactory    {        ILog ILogFactory.GetLogger(string name)        {            return new Log4NetWrapper(log4net.LogManager.GetLogger(name));        }        ILog ILogFactory.GetLogger(Type type)        {            return new Log4NetWrapper(log4net.LogManager.GetLogger(type));        }    }}
View Code

4.创建一个Wrapper实现ILog

using System;namespace WQB.Logging{    internal class Log4NetWrapper : ILog    {        private log4net.ILog log;        public Log4NetWrapper(log4net.ILog log)        {            this.log = log;        }        #region [ ILog                         ]        bool ILog.IsDebugEnabled        {            get { return this.log.IsDebugEnabled; }        }        bool ILog.IsInfoEnabled        {            get { return this.log.IsInfoEnabled; }        }        bool ILog.IsWarnEnabled        {            get { return this.log.IsWarnEnabled; }        }        bool ILog.IsErrorEnabled        {            get { return this.log.IsErrorEnabled; }        }        bool ILog.IsFatalEnabled        {            get { return this.log.IsFatalEnabled; }        }        void ILog.Debug(object message)        {            this.log.Debug(message);        }        void ILog.Debug(object message, Exception exception)        {            this.log.Debug(message, exception);        }        void ILog.DebugFormat(string format, object arg0)        {            this.log.DebugFormat(format, arg0);        }        void ILog.DebugFormat(string format, object arg0, object arg1)        {            this.log.DebugFormat(format, arg0, arg1);        }        void ILog.DebugFormat(string format, object arg0, object arg1, object arg2)        {            this.log.DebugFormat(format, arg0, arg1, arg2);        }        void ILog.DebugFormat(string format, params object[] args)        {            this.log.DebugFormat(format, args);        }        void ILog.DebugFormat(IFormatProvider provider, string format, params object[] args)        {            this.log.DebugFormat(provider, format, args);        }        void ILog.Info(object message)        {            this.log.Info(message);        }        void ILog.Info(object message, Exception exception)        {            this.log.Info(message, exception);        }        void ILog.InfoFormat(string format, object arg0)        {            this.log.InfoFormat(format, arg0);        }        void ILog.InfoFormat(string format, object arg0, object arg1)        {            this.log.InfoFormat(format, arg0, arg1);        }        void ILog.InfoFormat(string format, object arg0, object arg1, object arg2)        {            this.log.InfoFormat(format, arg0, arg1, arg2);        }        void ILog.InfoFormat(string format, params object[] args)        {            this.log.InfoFormat(format, args);        }        void ILog.InfoFormat(IFormatProvider provider, string format, params object[] args)        {            this.log.InfoFormat(provider, format, args);        }        void ILog.Warn(object message)        {            this.log.Warn(message);        }        void ILog.Warn(object message, Exception exception)        {            this.log.Warn(message, exception);        }        void ILog.WarnFormat(string format, object arg0)        {            this.log.WarnFormat(format, arg0);        }        void ILog.WarnFormat(string format, object arg0, object arg1)        {            this.log.WarnFormat(format, arg0, arg1);        }        void ILog.WarnFormat(string format, object arg0, object arg1, object arg2)        {            this.log.WarnFormat(format, arg0, arg1, arg2);        }        void ILog.WarnFormat(string format, params object[] args)        {            this.log.WarnFormat(format, args);        }        void ILog.WarnFormat(IFormatProvider provider, string format, params object[] args)        {            this.log.WarnFormat(provider, format, args);        }        void ILog.Error(object message)        {            this.log.Error(message);        }        void ILog.Error(object message, Exception exception)        {            this.log.Error(message, exception);        }        void ILog.ErrorFormat(string format, object arg0)        {            this.log.ErrorFormat(format, arg0);        }        void ILog.ErrorFormat(string format, object arg0, object arg1)        {            this.log.ErrorFormat(format, arg0, arg1);        }        void ILog.ErrorFormat(string format, object arg0, object arg1, object arg2)        {            this.log.ErrorFormat(format, arg0, arg1, arg2);        }        void ILog.ErrorFormat(string format, params object[] args)        {            this.log.ErrorFormat(format, args);        }        void ILog.ErrorFormat(IFormatProvider provider, string format, params object[] args)        {            this.log.ErrorFormat(provider, format, args);        }        void ILog.Fatal(object message)        {            this.log.Fatal(message);        }        void ILog.Fatal(object message, Exception exception)        {            this.log.Fatal(message, exception);        }        void ILog.FatalFormat(string format, object arg0)        {            this.log.FatalFormat(format, arg0);        }        void ILog.FatalFormat(string format, object arg0, object arg1)        {            this.log.FatalFormat(format, arg0, arg1);        }        void ILog.FatalFormat(string format, object arg0, object arg1, object arg2)        {            this.log.FatalFormat(format, arg0, arg1, arg2);        }        void ILog.FatalFormat(string format, params object[] args)        {            this.log.FatalFormat(format, args);        }        void ILog.FatalFormat(IFormatProvider provider, string format, params object[] args)        {            this.log.FatalFormat(provider, format, args);        }        #endregion    }}
View Code

5.创建一个日志对象LogManager

using System;using System.Configuration;using System.IO;namespace WQB.Logging{    ///     /// Creates loggers based on the current configuration.    ///     /// 
/// /// /// Code: /// /// private static readonly WQB.Logging.ILog log = WQB.Logging.LogManager.GetLogger(typeof(DefaultServerPool)); /// log.Debug("hello world."); ///
public static class LogManager { private static ILogFactory factory; static LogManager() { // use the log4net logger LogManager.factory = (ILogFactory)new Log4NetFactory(); } /// /// Assigns a new logger factory programmatically. /// /// public static void AssignFactory(ILogFactory factory) { if (factory == null) throw new ArgumentNullException("factory"); LogManager.factory = factory; } /// /// Returns a new logger for the specified Type. /// /// ///
public static ILog GetLogger(Type type) { return factory.GetLogger(type); } /// /// Returns a logger with the specified name. /// /// ///
public static ILog GetLogger(string name) { return factory.GetLogger(name); } }}
View Code

创建日志对象,添加日志如下操作即可:

private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

logger.Error(msg);

6.在web.config中配置log4net

在configSections节点内部添加节点log4net的节点即可,如下:

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

 

转载于:https://www.cnblogs.com/zfylzl/p/6797074.html

转载地址:https://blog.csdn.net/aibian0219/article/details/101652406 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:日志
下一篇:日常问题记录

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月21日 05时42分41秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

8k分辨率需要多大带宽_超乎想象!用RTX3080显卡连索尼8K电视玩游戏感受如何?... 2019-04-21
win10怎么开启aptx_Win10未来的黑科技?微软SurfaceFleet大曝光 2019-04-21
creo视图管理器使用方法_学以致用之中望3D—浅谈使用中望3D的初步感受 2019-04-21
周育如的音标口诀大全_花鸟画口诀大全,实用! 2019-04-21
心电图计算心率公式_医学常用的计算公式口诀(内外妇儿),赶快收藏! 2019-04-21
select 移动端 第一个无法选中_Python爬虫微博(移动端)评论 2019-04-21
华为云welink成像是反的_华为发布智能办公神器WeLink,可连接会议室开会,还可一键遥控报销和智能翻译... 2019-04-21
唱好铁血丹心谐音正规_趙贤典:打好“感情牌” 唱好“大合唱” 2019-04-21
aix系统vi修改命令_Linux基础知识必备:利用vi编辑器创建和编辑正文文件 2019-04-21
天涯明月刀开发_玩家被天涯明月刀手游“冷落”?六大门派角色竟不带正眼看人... 2019-04-21
this指向undefined uiapp_一个this都没有,真好 2019-04-21
add p4 多个文件_2-3【微信小程序全栈开发课程】index页面完善--vue文件代码解析... 2019-04-21
5w2h原则指的是什么_什么是5W2H分析法?一首小诗带入进入大门。 2019-04-21
技校毕业是什么学历_中等职业学校是什么_中等职业学校毕业是什么学历 2019-04-21
2压缩备份数据库_MySQL数据备份与恢复(二) xtrabackup工具 2019-04-21
英特尔cpu发布时间表_被嘲讽的英特尔核显,强大能力其实超乎你的想象 2019-04-21
chi2inv函数 matlab_MATLAB概率和统计(2) 2019-04-21
lisp修改上一个图素_在Windows上安装Haskell 2019-04-21
ad19 导出step 没有pcb_几款主流PCB软件哪个最好用,你用过几款? 2019-04-21
json mysql 字段 默认值_Newtonsoft.Json 六个超简单又实用的特性,值得一试 【上篇】... 2019-04-21