.net framework 工具类2. LogHelper

using NLog;
using NLog.Config;
using NLog.Targets;
using System;
using System.IO;
using System.Text;

namespace PublicTools
{
    public class LogHelper
    {
        private string _prefix = string.Empty;
        private Logger _logger;
        private static object obj = new object();
        private static LogHelper _log;

        public static LogHelper Log
        {
            get
            {
                if (_log == null)
                {
                    lock (obj)
                    {
                        if (_log == null)
                        { _log = new LogHelper(); }
                    }
                }
                return _log;
            }
            set => _log = value;
        }
        public LogHelper()
        {
            var config = new LoggingConfiguration();
            var fileTarget = new FileTarget();
            fileTarget.FileName = "${basedir}/ProjectLogs/${shortdate}/Log-${level}-${shortdate}.txt";
            fileTarget.Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss} |${message}";
            fileTarget.Encoding = Encoding.UTF8;
            config.AddTarget("file", fileTarget);
            var rule = new LoggingRule("*", LogLevel.Debug, fileTarget);
            config.LoggingRules.Add(rule);
            LogManager.Configuration = config;
            _logger = NLog.LogManager.GetLogger("log");
            LogManager.Setup();

        }
        /// <summary>
        /// 设置log文件前缀,会删掉默认的时间前缀
        /// </summary>
        /// <param name="LayoutPrefix"></param>
        public void SetLayoutPrefix(string LayoutPrefix)
        {
            var config = new LoggingConfiguration();
            var fileTarget = new FileTarget();
            config.AddTarget("file", fileTarget);
            fileTarget.FileName = "${basedir}/ProjectLogs/${shortdate}/Log-${level}-${shortdate}.txt";
            //fileTarget.Layout = "${longdate} |${message}";
            fileTarget.Layout =  LayoutPrefix + "${message}";
            fileTarget.Encoding = Encoding.UTF8;
            var rule = new LoggingRule("*", LogLevel.Debug, fileTarget);
            config.LoggingRules.Add(rule);
            LogManager.Configuration = config;
            _logger = LogManager.GetLogger("Log");
            LogManager.Setup();
        }


        /// <summary>
        /// 
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="logPath">可选择相对路径,默认绝对路径</param>
        public void SetLogPath(string dir, LogPath logPath=LogPath.customize)
        {
            dir = dir.Replace(@"\", "/");
            if (Path.GetExtension(dir) == "")
            {
                dir = dir + "/Log-${level}-${shortdate}.txt";
            }
            if (logPath == LogPath.BasePath)
            {
                dir = AppDomain.CurrentDomain.BaseDirectory+ "/ProjectLogs/" + dir;
            }
            var config = LogManager.Configuration;
            var fileTarget = (FileTarget)config.FindTargetByName("file");
            fileTarget.FileName = dir;

        }
        /// <summary>
        /// 设置log文件前缀,不会删掉默认的时间前缀
        /// </summary>
        /// <param name="LayoutPrefix"></param>
        public void SetPrefix(string prefix)
        {
            _prefix = prefix;
        }
        #region Debug,调试
        public void Debug(string msg)
        {
            _logger.Debug(_prefix + msg);
        }

        public void Debug(string msg, Exception err)
        {
            _logger.Debug(err, _prefix + msg);
        }
        #endregion

        #region Info,信息
        public void Info(string msg)
        {
            _logger.Info(_prefix + msg);
        }
        public void InfoWithOutPrefix(string msg)
        {
            _logger.Info( msg);
        }
        public void Info(string msg, Exception err)
        {
            _logger.Info(err.Message, _prefix + msg);
        }
        #endregion

        #region Warn,警告
        public void Warn(string msg)
        {
            _logger.Warn(_prefix + msg);
        }

        public void Warn(string msg, Exception err)
        {
            _logger.Warn(err, _prefix + msg);
        }
        #endregion

        #region Trace,追踪
        public void Trace(string msg)
        {
            _logger.Trace(_prefix + msg);
        }

        public void Trace(string msg, Exception err)
        {
            _logger.Trace(err, _prefix + msg);
        }
        #endregion

        #region Error,错误
        public void Error(string msg)
        {
            _logger.Error(_prefix + msg);
        }

        public void Error(string msg, Exception err)
        {
            _logger.Error(err.Message, _prefix + msg);
        }
        #endregion

        public void Fatal(string msg)
        {
            _logger.Fatal(_prefix + msg);
        }

        public void Fatal(string msg, Exception err)
        {
            _logger.Fatal(err, _prefix + msg);
        }
    }

    public enum LogPath
    {
        customize =0,
        BasePath =1
    }
}


使用:

PublicTools.LogHelper.Log.Debug("Test");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值