log4net won't write to the visual web developer console - console

this is my config for log4net but it wont write to the console
see appender: ConsoleAppender
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="C:\Users\name\Documents\visual studio 2010\Projects\logs\logfile.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %C %m%n%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %C %m%n%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
</configuration>
Why doesn't it write to the console?
Edit 1
This is how I initialize it:
log4net.Config.XmlConfigurator.Configure(new FileInfo("C:\\Users\\name\\Documents\\Visual Studio 2010\\Projects\\ExecutionEngine\\Libraries\\App.Config"));
Thanks

You can use the trace appender for this purpose. For instance like this:
<appender name="TraceAppender"
type="log4net.Appender.TraceAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-6level - %message%newline" />
</layout>
</appender>

Related

log4net AdoNetAppender in .Net core not supported?

I'm trying to implement log4net 2.0.8 in our dot net core 1.1.2 app. The ConsoleAppender is working fine, but the AdoNetAppender throws an error:
Could not load type 'log4net.Appender.AdoNetAppender'
Is AdoNetAppender still not supported in Dot Net Core?
My config:
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%thread] %-5level %logger: %message%newline" />
</layout>
</appender>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=MyMSSQLServer; initial catalog=MyDatabase;integrated security=false;persist security info=True;User ID=sa;Password=***" />
<commandText value="dbo.prcLog4Net_LogMsg" />
<commandType value="StoredProcedure" />
<parameter>
<parameterName value="#session_id" />
<dbType value="Int" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{session_id}" />
</layout>
</parameter>
<parameter>
<parameterName value="#message" />
<dbType value="AnsiString" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="AdoNetAppender" />
</root>
</log4net>
The ado.net appender is not supported, you can look it up in the following page:
framework-support.html#Appenders

log4net not logging to event viewer from IIS

I have a web service set up in my IIS, the appender that logs to a text file is working fine (the text file is in the same directory as where the web service is running from). The appender that writes to the Event Viewer isn't working, I'm currently connected to the web service as administrator so I should in theory be able to do this, what else should I check/see if I'm missing?
log4net.config:
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newlineExtra Info: %property{testProperty}%newline%exception"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO"/>
<levelMax value="FATAL"/>
</filter>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<param name="ApplicationName" value="Lending Service" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %newline %exception" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO"/>
<levelMax value="FATAL"/>
</filter>
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="DEBUG"/>
<file value="webLog.log"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="5"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
</layout>
</appender>
<root>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="EventLogAppender" />
</root>
<logger name="LendingService.Global_asax">
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="EventLogAppender" />
</logger>
<logger name="LendingService.LendingService">
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="EventLogAppender" />
</logger>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
The best way to find out what is going wrong is enable log4net interal debug, this will tell you where log4net is failing:
<configuration>
...
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Log4net FAQ

log4net rolling file appender not working

I have following configuration:
<log4net>
<root>
<level value="All"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="mylog.log"/>
<appendToFile value="true"/>
<preserveLogFileNameExtension value="true"/>
<rollingStyle value="Composite"/>
<datePattern value=".yyyyMMdd"/>
<maximumFileSize value="5MB"/>
<countDirection value="1"/>
<maxSizeRollBackups value="-1"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
</log4net>
And the following code in global.asax:
Sub Application_Start()
AreaRegistration.RegisterAllAreas()
RegisterGlobalFilters(GlobalFilters.Filters)
RegisterRoutes(RouteTable.Routes)
BasicConfigurator.Configure();
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")
End Sub
For the tag file in configuration above. I have tried C:\my folder\mylog.log as well as what is seen above mylog.log
However, I do not see this file generated anywhere and there are no exceptions.
Environment: VS 2013 ASP.Net VB. Running via Debug menu. When I run IISExpress is started by VS2013 and site runs. but no log is seen.
I have tried various combinations for the file tag but nothing works.
Can someone help please?
This is final version of what I ended up doing that worked:
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\log4net.log"/>
<datePattern value="yyyy-MM-dd'-FULL.log'" />
<appendToFile value="true"/>
<preserveLogFileNameExtension value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="250KB"/>
<maxSizeRollBackups value="-1"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
</log4net>
And
XmlConfigurator.Configure()
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")
This logged to log\log4net.log in the application directory (i.e. where my code is )
This used to work for me (I've switched to the lighter and better configurable NLog), log rolled daily, was written in a subfolder named "Logs" under the app's path.
<appender name="RollingDebugAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\" />
<datePattern value="yyyy-MM-dd'-FULL.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
You should turn on log4net's internal debugging to figure out what's failing...
Sample web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\log4net_internal.log"/>
</listeners>
</trace>
</system.diagnostics>
</configuration>
More information available here on the troubleshooting section.
*_%date{yyyyMMdd}.log
below is the key, if this is missing u will see logs like above
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\log4net_internal.log"/>
**<staticLogFileName value="false" />**
</listeners>
</trace>
</system.diagnostics>
</configuration>
Adding debug = "true" to the <log4net> tag (i.e. <log4net debug="true"> ) can help to solve the problem

Flyway logging with log4j?

hy guys,
is there a best practice of how to get flyway output into log4j logs?
I'm currently running with following log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="CA" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-p - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="INFO"/>
<param name="levelMax" value="ERROR"/>
</filter>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false"/>
<param name="file" value="log.out"/>
<param name="immediateFlush" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<logger name="com.googlecode.flyway.core.migration" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="fileAppender"/>
</logger>
<root>
<priority value="all"/>
<appender-ref ref="CA"/>
<appender-ref ref="fileAppender"/>
</root>
</log4j:configuration>
I have already searched for an answer online but could not figure it out.
Flyway will automatically use Log4J if it is available on the classpath.

Log4Net: How to specify different level to separate appenders for ASP.NET

For Log4Net used in ASP.NET,
how do I specify specify different levels to separate appenders in web.config?
Thanks.
Pure guesswork at play here.
Looked at the documentation & thought, this could be the way to do it.
Note: DEBUG level messages are logged to console & WARN level messages are logged to eventlog.
I hope it works :)
<log4net>
<!-- A1 is set to be a ConsoleAppender -->
<appender name="A1" type="log4net.Appender.ConsoleAppender">
<!-- A1 uses PatternLayout -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="DebugLogger">
<level value="DEBUG" />
<appender-ref ref="A1" />
</logger>
<logger name="WarnLogger">
<level value="WARN" />
<appender-ref ref="EventLogAppender" />
</logger>
</log4net>
This works for SmtpAppender at least. Guess it will work for other appenders too, but I haven't tested it
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>

Resources