I am seeing an error when using the FileAppender with
the BasicConfigurator. I get an exception when log4net
tries to access the "SecurityContext" property, as it
is null.
I put together a quick console app to demonstrate the
problem. Log4net debug output follows below.
log4net version 1.2.9.0
.NET framework version 1.0.3705.6018
// BEGIN SAMPLE C# CONSOLE APP
[STAThread]
static void Main(string[] args)
{
string fileName = "C:\\log.txt";
log4net.Layout.PatternLayout layout = new
log4net.Layout.PatternLayout("[%d] %-6p %-40c %-80m
%l%n");
log4net.Util.LogLog.InternalDebugging = true;
log4net.Appender.FileAppender fa = new
log4net.Appender.FileAppender();
fa.File = fileName;
fa.Layout = layout;
log4net.Config.BasicConfigurator.Configure(fa);
log4net.ILog log =
log4net.LogManager.GetLogger("test");
log.Info("test message");
}
// END SAMPLE C# CONSOLE APP
// BEGIN LOG4NET DEBUG OUTPUT
log4net: log4net assembly [log4net, Version=1.2.9.0,
Culture=neutral, PublicKeyToken=null]. Loaded from
[c:\vss\consoleapplication1\bin\debug\log4net.dll].
(.NET Runtime [1.0.3705.6018] on Microsoft Windows NT
5.0.2195.0)
log4net: DefaultRepositorySelector:
defaultRepositoryType
[log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: Creating
repository for assembly [ConsoleApplication1,
Version=1.0.1927.29103, Culture=neutral,
PublicKeyToken=null]
log4net: DefaultRepositorySelector: Assembly
[ConsoleApplication1, Version=1.0.1927.29103,
Culture=neutral, PublicKeyToken=null] Loaded From
[c:\VSS\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe]
log4net: DefaultRepositorySelector: Assembly
[ConsoleApplication1, Version=1.0.1927.29103,
Culture=neutral, PublicKeyToken=null] does not have a
RepositoryAttribute specified.
log4net: DefaultRepositorySelector: Assembly
[ConsoleApplication1, Version=1.0.1927.29103,
Culture=neutral, PublicKeyToken=null] using repository
[log4net-default-repository] and repository type
[log4net.Repository.Hierarchy.Hierarchy]
log4net: DefaultRepositorySelector: Creating
repository [log4net-default-repository] using type
[log4net.Repository.Hierarchy.Hierarchy]
log4net:ERROR [FileAppender] OpenFile(C:\log.txt,True)
call failed.
System.NullReferenceException: Object reference not
set to an instance of an object.
at log4net.Appender.FileAppender.OpenFile(String
fileName, Boolean append) in
C:\Work\cvs_root\apache\r1.2.9\logging-log4net\build\package\log4net-1.2.9-beta\src\Appender\FileAppender.cs:line
982
at
log4net.Appender.FileAppender.SafeOpenFile(String
fileName, Boolean append) in
C:\Work\cvs_root\apache\r1.2.9\logging-log4net\build\package\log4net-1.2.9-beta\src\Appender\FileAppender.cs:line
953
log4net:ERROR [FileAppender] No output stream or file
set for the appender named [].
// END LOG4NET DEBUG OUTPUT
Comments: The error is occuring here-
File:
FileAppender.cs
Method:
virtual protected void OpenFile(string fileName,
bool append)
using(SecurityContext.Impersonate(this))
...
Line 982, the original exception source line (the
"using" statement) is shown above.