Add log4net to asp.net mvc to record error logs, mvclog4net
First, add the log4net dll. We recommend that you use nuget ....
Paste the configuration file
<? Xml version = "1.0" encoding = "UTF-8"?> <Configuration> <configSections> <section name = "log4net" type = "log4net. Config. Log4NetConfigurationSectionHandler, log4Net"/> </configSections> <! -- Log configuration start --> <log4net debug = "true"> <root> <level value = "ALL"/> <appender-ref = "SysAppender"/> <appender -ref = "AdoNetAppender"/> </root> <logger name = "WebLogger"> <! -- Configure the log level, if it is lower than this level, it will not be written into the log --> <level value = "DEBUG"/> </logger> <appender name = "SysAppender" type = "log4net. appender. rollingFileAppender, log4net "> <param name =" File "value =" App_Data/"/> <param name =" AppendToFile "value =" true "/> <param name =" RollingStyle "value = "Date"/> <param name = "DatePattern" value = ""Logs_"yyyyMMdd".htm & quot; "/> <param name =" StaticLogFileName "value =" false "/> <l Ayout type = "log4net. layout. patternLayout "> <param name =" ConversionPattern "value =" & lt; hr color = red & gt; % n exception time: % d [% t] & lt; BR & gt; % n exception level: %-5 p & lt; BR & gt; % n exception class: % c [% x] & lt; BR & gt; % n % m & lt; BR & gt; % n & lt; HR Size = 1 & gt; "/> <! -- <ConversionPattern value = "% newline % n record time: % date % newline % n thread ID: [% thread] % n log level: %-5 level % n trace description: % message % newline % n "/> --> </layout> </appender> <appender name =" AdoNetAppender "type =" log4net. appender. adoNetAppender "> <bufferSize value =" 1 "/> <connectionType value =" MySql. data. mySqlClient. mySqlConnection, MySql. data, Version = 6.8.3.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d "/> <connectio NString value = "server = localhost; port = 3306; database = jianzheng; uid = root; pwd = svse; "/> <commandText value =" insert into 'testsyslog '('date', 'thread', 'level', 'logger', 'method', 'location ', 'message', 'exception') VALUES (@ Date, @ Thread, @ Level, @ Logger, @ Method, @ Location, @ Message, @ Exception) "/> <parameter> <parameterName value =" @ Date "/> <dbType value =" DateTime "/> <layout type =" log4net. layout. ra WTimeStampLayout "/> </parameter> <parameterName value =" @ Thread "/> <dbType value =" String "/> <size value =" 255 "/> <layout type = "log4net. layout. patternLayout "> <conversionPattern value =" % thread "/> </layout> </parameter> <parameterName value =" @ Level "/> <dbType value =" String & quot;/> <size value = "255"/> <layout type = "log4net. layout. patternLayout "> <conversionPattern value =" % lev El "/> </layout> </parameter> <parameterName value =" @ Logger "/> <dbType value =" String "/> <size value =" 255 ""/> <layout type =" log4net. layout. patternLayout "> <conversionPattern value =" % logger "/> </layout> </parameter> <parameterName value =" @ Method "/> <dbType value =" String & quot;/> <size value = "255"/> <layout type = "log4net. layout. patternLayout "> <conversionPattern value =" % method "/> </Layout> </parameter> <parameterName value =" @ Location "/> <dbType value =" String "/> <size value =" 1023" /> <layout type = "log4net. layout. patternLayout "> <conversionPattern value =" % location "/> </layout> </parameter> <parameterName value =" @ Message "/> <dbType value =" String & quot;/> <size value = "4000"/> <layout type = "log4net. layout. patternLayout "> <conversionPattern value =" % Message "/> </layout> </parameter> <parameterName value =" @ Exception "/> <dbType value =" String "/> <size value =" 8000 ""/> <layout type =" log4net. layout. predictionlayout "/> </parameter> </appender> </log4net> <! -- Log configuration ends --> </configuration>
This demo is a new xml file.
Create in the root directory of the website
Copy the xml configuration content,
Add the following sentence to Application_Start () of Global. asax.
// If log4net is used to read logs, initialize the configuration at the beginning of the application.
Log4net. Config. XmlConfigurator. Configure (new System. IO. FileInfo ("config \ log4net. config "));
Add it to AssemblyInfo. cs
[Assembly: log4net. Config. XmlConfigurator (ConfigFile = "Config \ log4net. config", Watch = false)]
The location of AssemblyInfo. cs is
Then add a filter.
Public class MyExceptionFileAttribute: HandleErrorAttribute {public override void OnException (ExceptionContext filterContext) {base. onException (filterContext); // process the error message and redirect it to a page LogHelper. writeLog (filterContext. exception. toString (); // page Jump to the error page filterContext. httpContext. response. redirect ("/Error.html ");}}
Create a tool class to write logs.
public class LogHelper { public static void WriteLog(string txt) { ILog log = LogManager.GetLogger("log4netlogger"); log.Error(txt); } }
Finally
Add a global filter to FilterConfig. cs.
// Register the Error Filter
Public static void RegisterGlobalFilters (GlobalFilterCollection filters)
{
Filters. Add (new HandleErrorAttribute ());
// Register the Error Filter
Filters. Add (new MyExceptionFileAttribute ());
}
By default, the error log is stored in app_data, which is an htm file.
Saved to the mysql database
Database Structure