Log4net 1.2.10.0 [best] -
log4net.Config.XmlConfigurator.Configure(); using log4net; public class OrderService
Events.Add(loggingEvent);
public static List<log4net.Core.LoggingEvent> Events = new List<log4net.Core.LoggingEvent>(); protected override void Append(log4net.Core.LoggingEvent loggingEvent) log4net 1.2.10.0
using (log4net.ThreadContext.Stacks["NDC"].Push("TransactionScope")) log4net
protected void Application_Error(object sender, EventArgs e) public class OrderService Events.Add(loggingEvent)
[assembly: log4net.Config.XmlConfigurator(Watch = true)] Or at application startup:
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <!-- Appenders and loggers go here --> </log4net> </configuration> RollingFileAppender (most common) <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logs\\app.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="5MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> </layout> </appender> ConsoleAppender <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%dateHH:mm:ss [%level] %message%newline" /> </layout> </appender> AdoNetAppender (SQL Server) <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data" /> <connectionString value="Server=.;Database=LogDB;Integrated Security=True" /> <commandText value="INSERT INTO Logs ([Date],[Level],[Logger],[Message]) VALUES (@log_date, @level, @logger, @message)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@level" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout" value="%level" /> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout" value="%logger" /> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout" value="%message" /> </parameter> </appender> Step 3: Configure Root Logger <root> <level value="INFO" /> <appender-ref ref="RollingFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> Step 4: Configure Specific Loggers <logger name="MyApp.BusinessLayer"> <level value="DEBUG" /> <appender-ref ref="AdoNetAppender" /> </logger> <logger name="MyApp.Security"> <level value="WARN" /> <appender-ref ref="RollingFileAppender" /> </logger> Basic Usage in Code Initialize log4net In AssemblyInfo.cs :