log4net is
a tool to help the programmer output log statements to a variety of output
targets.
a tool to help the programmer output log statements to a variety of output
targets.
This
example is written in Visual Studio 2015 for a WebAPI2 solution. The sample solution consists of three projects
that include a project for data, models, unit tests, etc. Source code can be found here:
https://github.com/cjsander/Log4netInMultiTierWebApp
example is written in Visual Studio 2015 for a WebAPI2 solution. The sample solution consists of three projects
that include a project for data, models, unit tests, etc. Source code can be found here:
https://github.com/cjsander/Log4netInMultiTierWebApp
SETUP:
1.
Create
your project and then import the following Nuget package: https://www.nuget.org/packages/log4net/
Create
your project and then import the following Nuget package: https://www.nuget.org/packages/log4net/
2.
For
each project, add reference to log4net.dll assembly. Though all configuration will be in the main
API project, other projects will require the assembly reference as well.
For
each project, add reference to log4net.dll assembly. Though all configuration will be in the main
API project, other projects will require the assembly reference as well.
3.
Configuration
files to be included are:
Configuration
files to be included are:
a. Log4net.config
b. Web.config
c. Settings.xml
d. Global.asax.cs
4.
Note
that the <appsettings> node of the web.config file has been abstracted
into a separate file — Settings.xml.
These settings will be referenced in the web.config in the following
line of code:
Note
that the <appsettings> node of the web.config file has been abstracted
into a separate file — Settings.xml.
These settings will be referenced in the web.config in the following
line of code:
<appSettings file=“c:webappslog4sampleconfigsettings.xml“/>
APPLICATION:
1. In your web.config file, enter the
following:
following:
<configSections>
<section name=“log4net“ type=“log4net.Config.Log4NetConfigurationSectionHandler,
log4net“/>
log4net“/>
</configSections>
2. Now, add the logging configuration
values. These can be added in your
web.config(or app.config) but in this scenario, it has its own configuration
file – log4net.config:
values. These can be added in your
web.config(or app.config) but in this scenario, it has its own configuration
file – log4net.config:
<log4net>
<appender name=“RollingFile“ type=“log4net.Appender.RollingFileAppender“>…..
</log4net>
3. Then,
you will want to add the path to the file in your <appSettings> node:
you will want to add the path to the file in your <appSettings> node:
<add key=“logPath“ value=“c:webappslog4sampleconfiglog4net.config“ />
4. In your
Global.asax file, add the following to the Application_Start() method:
Global.asax file, add the following to the Application_Start() method:
//log4net setup:
var logPath = (ConfigurationManager.AppSettings[“logPath”]);
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(logPath));
EXTRA:
You can also
add a helper method to customize your logging and add details that would help
with your debugging:
add a helper method to customize your logging and add details that would help
with your debugging:
public class Log4NetHelper
{
public string LogMsg(Message m, [Optional] string exceptionMsg, [CallerMemberName] string methodName = “”)
{
string msg = $”{methodName} {m} {exceptionMsg}“;
return msg;
}
}
To
reference:
reference:
private readonly Log4NetHelper _msg = new Log4NetHelper();
_logger.Debug(_msg.LogMsg(Log4NetHelper.Message.InitialRequestStart));