Log4net example needed in MVC5
Posted: Wed 13 Aug 2014 14:12
Hello DevArt,
I'm looking for an example on how to implement Log4Net in MVC5 with LinqConnect Pro 4.4.553.
I can only find one example of Oracle (which we do not work with), but I can not get it to work for sqlite by DevArt.
I created a seperate Log4Net.config file in the root of my project which includes:
(Do I need to set public keys or version numbers on de DevArt connectionstring? And what are they for version 4.4.553?)
The table in sqlite db:
In my Global.asax.cs - Application_Start() I added:
and at last in the controller I want to log, which does not log to db (no error is given)
No errors are given on debug or release, but there is also no registration in de sqlite db.
Please help, is there some implementation example (also to file) how to do this?
I'm looking for an example on how to implement Log4Net in MVC5 with LinqConnect Pro 4.4.553.
I can only find one example of Oracle (which we do not work with), but I can not get it to work for sqlite by DevArt.
I created a seperate Log4Net.config file in the root of my project which includes:
(Do I need to set public keys or version numbers on de DevArt connectionstring? And what are they for version 4.4.553?)
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net debug="true">
<root>
<level value="DEBUG" />
<appender-ref ref="sqlite-appender" />
<!-- Uncomment when basic TextAppender is needed
<appender-ref ref="file-appender" />
-->
</root>
<appender name="file-appender" type="log4net.Appender.FileAppender+MinimalLock">
<file value="log-file.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="sqlite-appender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<!--<connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite" />-->
<connectionType value="DevArt.Data.SQLite.SQLiteConnection, DevArt.Data.SQLite" />
<connectionString value="Data Source=E:\Development\EDevelopment\MVC\Db\Edb.s3db" />
<!--<connectionString value="Data Source=|DataDirectory|\DebugLog.db;Synchronous=Off " />-->
<commandText value="INSERT INTO nseLog
(
appdomain, aspnetcache, aspnetcontext,
aspnetrequest, aspnetsession, [date],
exception, file, identity, location, level,
line, logger, message, method, ndc,
property, stacktrace, stacktracedetail,
[timestamp], thread, type, username,
utcdate
)
VALUES (
@appdomain, @aspnetcache, @aspnetcontext,
@aspnetrequest, @aspnetsession, @date,
@exception, @file, @identity, @location,
@level, @line, @logger, @message, @method,
@ndc, @property, @stacktrace, @stacktracedetail,
@timestamp, @thread, @type, @username,
@utcdate
)" />
<parameter>
<parameterName value="@appdomain" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%appdomain" />
</layout>
</parameter>
<parameter>
<parameterName value="@aspnetcache" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%aspnet-cache" />
</layout>
</parameter>
<parameter>
<parameterName value="@aspnetcontext" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%aspnet-context" />
</layout>
</parameter>
<parameter>
<parameterName value="@aspnetrequest" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%aspnet-request" />
</layout>
</parameter>
<parameter>
<parameterName value="@aspnetsession" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%aspnet-session{Usuario}" />
</layout>
</parameter>
<parameter>
<parameterName value="@date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%exception" />
</layout>
</parameter>
<parameter>
<parameterName value="@file" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%file" />
</layout>
</parameter>
<parameter>
<parameterName value="@identity" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%identity" />
</layout>
</parameter>
<parameter>
<parameterName value="@location" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%location" />
</layout>
</parameter>
<parameter>
<parameterName value="@level" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@line" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%line" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@method" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%method" />
</layout>
</parameter>
<parameter>
<parameterName value="@ndc" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%ndc" />
</layout>
</parameter>
<parameter>
<parameterName value="@property" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property" />
</layout>
</parameter>
<parameter>
<parameterName value="@stacktrace" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%stacktrace" />
</layout>
</parameter>
<parameter>
<parameterName value="@stacktracedetail" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%stacktracedetail" />
</layout>
</parameter>
<parameter>
<parameterName value="@timestamp" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%timestamp" />
</layout>
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@type" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%type" />
</layout>
</parameter>
<parameter>
<parameterName value="@username" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%username" />
</layout>
</parameter>
<parameter>
<parameterName value="@utcdate" />
<dbType value="DateTime" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate{yyyy-MM-dd HH:mm:ss}" />
</layout>
</parameter>
</appender>
</log4net>
</configuration>
Code: Select all
CREATE TABLE "main".nseLog (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
[appdomain] TEXT,
[aspnetcache] TEXT,
[aspnetcontext] TEXT,
[aspnetrequest] TEXT,
[aspnetsession] TEXT,
[date] DATE NOT NULL DEFAULT 'now',
[exception] TEXT,
[file] TEXT,
[identity] TEXT,
[location] TEXT,
[level] TEXT,
[line] integer,
[logger] TEXT,
[message] TEXT,
[method] TEXT,
[ndc] TEXT,
[property] TEXT,
[stacktrace] TEXT,
[stacktracedetail] TEXT,
[timestamp] bigint,
[thread] TEXT,
[type] TEXT,
[username] TEXT,
[utcdate] DATE NOT NULL DEFAULT 'now',
[appfree1] TEXT,
[appfree2] TEXT,
[appfree3] TEXT
)
Code: Select all
protected void Application_Start()
{
....
var log4NetPath = Server.MapPath("~/Log4Net.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(log4NetPath));
}
Code: Select all
public class EController : BaseController
{
private static readonly ILog logger = LogManager.GetLogger(typeof(EController).FullName);
public DbLog()
{
logger.Info("It's working");
logger.Debug("Debug messages are not recorded due to log level");
logger.Warn("It's a warning now");
logger.Error("It's an error now 2");
logger.Fatal("This is the end!");
}
Please help, is there some implementation example (also to file) how to do this?