标签:end alt 控制器 csharp 模板 语言 控制 日期格 read
在webapiconfig.cs中添加
log4net.Config.XmlConfigurator.Configure();
web.config
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<log4net>
<!--warning, debug ,info, error-->
<root name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</root>
<!--<root name="loggerinfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</root>-->
<appender name="InfoAppender" type="log4net.Appender.AdoNetAppender">
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=.;database=myschool_log;uid=sa;pwd=sa"/>
<commandText value="INSERT INTO ZZHLog VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%l" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="500"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000"/>
<layout type="log4net.Layout.ExceptionLayout"/>
</parameter>
</appender>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\LogError\" />
<!-- 是否追加到文件中-->
<param name="AppendToFile" value="true" />
<!--最大文件备份数-->
<param name="MaxSizeRollBackups" value="100" />
<!-- 文件最大尺寸 -->
<param name="MaxFileSize" value="10240" />
<!-- 是否使用 静态文件名 , F 不使用 T 使用(需要人为指定文件名格式-->
<param name="StaticLogFileName" value="false" />
<!-- 日期格式 -->
<param name="DatePattern" value="yyyyMMdd".txt"" />
<!-- 生成文件的方式 -->
<param name="RollingStyle" value="Date" />
<!-- 日志文件中 一行的 模板 -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n异常时间:%d %n异常级别:%-5p%n异常内容:%m%n" />
</layout>
<!--< > = <> %n = 回车-->
</appender>
</log4net>
我们可能还需要知道是哪个控制器发生了错误
public static class Logger<T> where T:class { private readonly static ILog logger = LogManager.GetLogger(typeof(T)); public static void Info(object log) { logger.Info(log); } public static void Debug(object log) { logger.Debug(log); } public static void Warn(object log) { logger.Warn(log); } public static void Error(object log) { logger.Error(log); } }
在控制器的记录
Logger<GradeController>.Info("添加了年级信息");
web.config里的log4net的节点就需要修改了~ 最主要的就是appender这两个节点和普通输出文本有些不同!
<log4net> <!--warning, debug ,info, error--> <root name="logerror"> <level value="ALL" /> <appender-ref ref="ErrorAppender" /> </root> <!--<root name="loggerinfo"> <level value="ALL" /> <appender-ref ref="InfoAppender" /> </root>--> <appender name="InfoAppender" type="log4net.Appender.AdoNetAppender"> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="server=.;database=myschool_log;uid=sa;pwd=sa"/> <commandText value="INSERT INTO ZZHLog VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@thread" /> <dbType value="String" /> <size value="100"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <dbType value="String" /> <size value="100"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%l" /> </layout> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <size value="100"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="500"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%m" /> </layout> </parameter> <parameter> <parameterName value="@exception" /> <dbType value="String" /> <size value="2000"/> <layout type="log4net.Layout.ExceptionLayout"/> </parameter> </appender> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\LogError\" /> <!-- 是否追加到文件中--> <param name="AppendToFile" value="true" /> <!--最大文件备份数--> <param name="MaxSizeRollBackups" value="100" /> <!-- 文件最大尺寸 --> <param name="MaxFileSize" value="10240" /> <!-- 是否使用 静态文件名 , F 不使用 T 使用(需要人为指定文件名格式--> <param name="StaticLogFileName" value="false" /> <!-- 日期格式 --> <param name="DatePattern" value="yyyyMMdd".txt"" /> <!-- 生成文件的方式 --> <param name="RollingStyle" value="Date" /> <!-- 日志文件中 一行的 模板 --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n异常时间:%d %n异常级别:%-5p%n异常内容:%m%n" /> </layout> <!--< > = <> %n = 回车--> </appender> </log4net>
注意里面还包裹了connectionstr还有sql,所以我们应该去创建我们的数据库,表结构是和其中的parameter的节点对应的。
一个appender就是一个输出类型,比如文本或着db。
表结构:
标签:end alt 控制器 csharp 模板 语言 控制 日期格 read
原文地址:https://www.cnblogs.com/ZaraNet/p/9968517.html