一. LOG功能设计说明
1.1 LOG功能设计介绍
现在系统需要有记录详细LOG的完整功能,其中包括SERVER端LOG,CILENT 端LOG,UNDO LOG,AP LOG,UI LOG等等,现在采用log4net机制对所有LOG接口进行统一规范的管理。
1.2 LOG接口调用实现方法
1.2.1 接口实现说明 Log4net
Log4net是用于.NET开发环境的日志记录包,它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug, 一旦在程序中加入了 Log 输出代码,程序运行过程中就 就会就能生成并输出日志信息而无需人工干预。
1.2.2 详细实现方法
1) 第一步:在项目中引用log4net.dll文件;
2) 第二步:在web.config中加入一句代码,代码如下:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
</configuration>
3) 第三步:建一个单独的配置文件Log4Net.config(这个配置文件会在App_Data目录下按日期每天产生一个日志文件,如:Logs_20120606.txt),并根据下列代码配置不同的日志,代码:
<!--LOG 配置 start-->
<log4net>
<!--错误日志配置-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!--log的文件的路径-->
<param name="File" value="Log\\ErrorLogger\\" />
<!--是否log文件结尾继续添加log-->
<param name="AppendToFile" value="true" />
<!--log文件数的的最大值-->
<param name="MaxSizeRollBackups" value="100" />
<!--单个log文件的最大值,log文件一旦超过该值将新建一个文件继续记录-->
<param name="MaxFileSize" value="10240" />
<!--log文件名是否是静态-->
<param name="StaticLogFileName" value="false" />
<!--log文件的滚动方式-->
<param name="RollingStyle" value="Date" />
<!--以下是log的重要配置参数,请不要改动-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n " />
</layout>
</appender>
<!--控制台-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
</layout>
</appender>
<!--log4net.LogManager.GetLogger("logerror")用这个来选择这种类型-->
<logger name="ErrorLogger">
<level value="ERROR" />
<appender-ref ref="ErrorAppender" />
</logger>
<root>
<level value="ALL"/>
</root>
</log4net>
<!--LOG 配置 end-->
4) 第四步:在文件AssemblyInfo.cs加入一句代码,AssemblyInfo.cs的路径在Properties下,加入的代码如下:
// 日志组件配置
[assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = true)]
5)第五步:建立LOG的接口文件Log4net.cs文件,通过以下代码得到配置文件中的日志配置对象,代码如下:
先引入: Using log4net;
object o = ConfigurationSettings.GetConfig("log4net");
log4net.Config.DOMConfigurator.Configure(o as System.Xml.XmlElement);
private static log4net.ILog fileLog = log4net.LogManager.GetLogger("ErrorLogger");
private static log4net.ILog infoLog = log4net.LogManager.GetLogger("InfoLogger");
logger.Debug("调试");
logger.Error("这是一个错误日志");
logger.Fatal("这是一个致命的错误日志");
logger.Warn("这是一条警告日志");
logger.Info("这是一条普通信息");
注:ErrorLogger 和InfoLogger为config文件中标签logger中配置的名称,这样即可对应到该log4net对象是对应哪个日志配置对象。
6)通过在cs中编写接口方法,后面应用中只需调用该接口即可,代码如下:
public static void LogErrorToFile(string msg, Exception e)
{
if (fileLog.IsErrorEnabled)
{
lock (fileLog)
{
msg = "--------------------" + Environment.NewLine + msg;
fileLog.Error(msg, e);
}
}
}
7)应用中调用该接口,代码如下:
LogManager.logErrorToFile(Msg); //Msg:即需要详细记录的log Message
1.2.3 提供日志查询界面
1)查询说明:系统 log 记录运行操作功能,在这里可以查看用户在后台的运行记录,比如来自哪个 IP 的管理者在哪一天的几点几分几秒访问了后台,进行过什么操作,此功能可以帮助维护人员更好的维护系统。
2)界面展示: