Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
This document provides an introduction to the standard implementation of the Logging API using log4net in the EPiServer platform, including CMS and Commerce. Here we describe how to configure logging in EPiServer, and how to interpret the logged information together with some best practices. The intended audiences are developers and system administrators. When the EPiServer.Logging.Log4Net package is deployed in your solution, any logging by the system will use the log4net framework. You are recommended to read the introduction at the Log4net website before reading this document for a better understanding.
There are seven levels of logging that are assigned according to priority level, with OFF having the highest value and ALL the lowest value:
Logging is controlled from a configuration file named EPiServerLog.config and should be placed in the same directory as the application’s web.config file. The reason why the logging configuration is separated from web.config is that if you want to enable logging when the application has entered a bad state, you have to change and save the configuration file. If the information is in web.config, the web application would be restarted when you save web.config, possibly clearing the cause for the problem that you wanted to log. Keeping the log configuration separate from web.config eliminates this problem.
A very simple log configuration file may look like this:
<log4net>
<appender name="ErrorAppender" type="log4net.Appender.FileAppender" >
<file value="e:\\episerverlogfiles\\log-file.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %l - %m%n" />
</layout>
</appender>
<root>
<level value="WARN" />
<appender-ref ref="ErrorAppender" />
</root>
</log4net>
You have the following ways to disable active logging:
The site information is primarily concerned with logging various problems and unusual events. Basically you should always monitor events with log level WARN and above. Events with lower levels are primarily intended to get information to track down specific errors and/or bugs. A developer might want to enable full logging to a RollingFileAppender (see the log4net documentation) in the development environment to be able to check what has happened in EPiServer in case a specific problem occurs. However, during regular production use, you would probably want to just monitor WARN events and higher.
Exceptions will be logged with the complete stack trace to enable you to track down exception errors. Be aware that exceptions are expensive in terms of performance. Avoid writing code that generates exceptions as part of the normal program flow.
For a production site, it is essential to have a policy regarding log files to avoid problems such as exposing log files on your website, filling up a system partition with log data etc. The EPiServer logging functions are intended to monitor the health of your web application and should under normal operation not cause excessive logging, as long as you do not enable logging of events below the WARN level. The following are our recommendations on how to store log files. Note that if you are using remoting, UDP appenders or any type of appender that does not write log files to the local drives, the actual storage of log data will probably not happen on the web server, although other restrictions may apply.
Last updated: Feb 23, 2015