MVC中的Log4配置

首先,添加一個xml文件到mvc項目中,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
	<!-- Define some output appenders -->
	<appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
		<file value="log\log.txt" />

		<!--追加日誌內容-->
		<appendToFile value="true" />

		<!--防止多線程時不能寫Log,官方說線程非安全-->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

		<!--可以爲:Once|Size|Date|Composite-->
		<!--Composite爲Size和Date的組合-->
		<rollingStyle value="Composite" />

		<!--當備份文件時,爲文件名加的後綴-->
		<datePattern value="yyyyMMdd.TXT" />

		<!--日誌最大個數,都是最新的-->
		<!--rollingStyle節點爲Size時,只能有value個日誌-->
		<!--rollingStyle節點爲Composite時,每天有value個日誌-->
		<maxSizeRollBackups value="20" />

		<!--可用的單位:KB|MB|GB-->
		<maximumFileSize value="3MB" />

		<!--置爲true,當前最新日誌文件名永遠爲file節中的名字-->
		<staticLogFileName value="true" />

		<!--輸出級別在INFO和ERROR之間的日誌-->
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="FATAL" />
		</filter>

		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
		</layout>
	</appender>

	<!-- levels: OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL -->
	<root>
		<priority value="ALL"/>
		<level value="ALL"/>
		<appender-ref ref="rollingAppender" />
	</root>
</log4net>
然後再項目中再添加一個Logger類,用於實例化。
using log4net;
using log4net.Config;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hero.MVC5.Utility
{
    public class Logger
    {
        static Logger()
        {
            XmlConfigurator.Configure(new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CfgFiles\\log4net.config")));
            ILog Log = LogManager.GetLogger(typeof(Logger));
            Log.Info("系統初始化Logger模塊");
        }

        private ILog loger = null;
        public Logger(Type type)
        {
            loger = LogManager.GetLogger(type);
        }

        /// <summary>
        /// Log4日誌
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public void Error(string msg = "出現異常", Exception ex = null)
        {
            Console.WriteLine(msg);
            loger.Error(msg, ex);
        }

        /// <summary>
        /// Log4日誌
        /// </summary>
        /// <param name="msg"></param>
        public void Warn(string msg)
        {
            Console.WriteLine(msg);
            loger.Warn(msg);
        }

        /// <summary>
        /// Log4日誌
        /// </summary>
        /// <param name="msg"></param>
        public void Info(string msg)
        {
            Console.WriteLine(msg);
            loger.Info(msg);
        }

        /// <summary>
        /// Log4日誌
        /// </summary>
        /// <param name="msg"></param>
        public void Debug(string msg)
        {
            Console.WriteLine(msg);
            loger.Debug(msg);
        }

    }
}
一般使用時在某個靜態類或在Global中實例化。下面在Global實例化一下。
    public class MvcApplication : System.Web.HttpApplication
    {
        private Logger logger = new Logger(typeof(MvcApplication));
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            this.logger.Info("網站啓動了。。。");
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章