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.


Reply via email to