1

I'm trying to make log4net work using File Appender.

I use specified pattern layout for messages, but the problem is that I get no text in my log file. only '??' symbols

It seems that the the message text somehow gets corrupted before being written to file.

I'm using Visual Studio 2008 on windows Server 2008. The log4net is initialised in global.asax

here is my config for log4net

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"></section>
. . .
<log4net debug="true">
    <appender name="INFOFileAppender" type="log4net.Appender.FileAppender">
        <lockingmodel type="log4net.Appender.FileAppender+MinimalLock"/>
      <threshold value="INFO" />  
      <file value="AOKlogs.txt" />
        <appendtofile value="true" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>          
    </appender>
    <root>
        <level value="ALLL" />
        <appender-ref ref="INFOFileAppender" />
    </root>
  </log4net>

I've tried both rollingfile and simple file appender without luck.

UPDATE I enabled debugging and configured log4net to write debug log to txt file. and here is what it says:

i enabled debugging log to txt file and here is what it says:

log4net: log4net assembly [log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821]. Loaded from [C:\Users\ScarryComp\AppData\Local\Temp\Temporary ASP.NET Files\website1\7e2bf4c4\4d1a1e05\assembly\dl3\c6bded9b\0086655c_d353c601\log4net.DLL]. (.NET Runtime [2.0.50727.4952] on Microsoft Windows NT 6.1.7600.0) log4net: DefaultRepositorySelector: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy] log4net: DefaultRepositorySelector: Creating repository for assembly [App_Code.ch9yol_l, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] log4net: DefaultRepositorySelector: Assembly [App_Code.ch9yol_l, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [C:\Users\ScarryComp\AppData\Local\Temp\Temporary ASP.NET Files\website1\7e2bf4c4\4d1a1e05\App_Code.ch9yol_l.dll] log4net: DefaultRepositorySelector: Assembly [App_Code.ch9yol_l, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. log4net: DefaultRepositorySelector: Assembly [App_Code.ch9yol_l, Version=0.0.0.0, 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: XmlConfigurator: configuring repository [log4net-default-repository] using .config file section log4net: XmlConfigurator: Application config file is [C:\Users\ScarryComp\Documents\Visual Studio 2008\WebSites\WebSite1\web.config] log4net: XmlConfigurator: Configuring Repository [log4net-default-repository] log4net: XmlHierarchyConfigurator: Configuration update mode [Merge]. log4net: XmlHierarchyConfigurator: Logger [root] Level string is [ALL]. log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="ALL",value=-2147483648]. log4net: XmlHierarchyConfigurator: Loading Appender [INFOFileAppender] type: [log4net.Appender.FileAppender] log4net: XmlHierarchyConfigurator: Setting Property [LockingModel] to object [log4net.Appender.FileAppender+MinimalLock] log4net: XmlHierarchyConfigurator: Setting Property [Threshold] to Level value [ALL] log4net: XmlHierarchyConfigurator: Setting Property [File] to String value [AOKlogs.txt] log4net: XmlHierarchyConfigurator: Setting Property [AppendToFile] to Boolean value [True] log4net: XmlHierarchyConfigurator: Parameter [layout] specified subtype [log4net.Layout.PatternLayout] log4net: PatternParser: Converter [literal] Option [   ] Format [min=-1,max=2147483647,leftAlign=False] log4net: XmlHierarchyConfigurator: Setting Property [Layout] to PatternLayout value [log4net.Layout.PatternLayout] log4net: FileAppender: Opening file for writing [C:\Users\ScarryComp\Documents\Visual Studio 2008\WebSites\WebSite1\AOKlogs.txt] append [True] log4net: XmlHierarchyConfigurator: Created Appender [INFOFileAppender] log4net: XmlHierarchyConfigurator: Adding appender named [INFOFileAppender] to logger [root]. log4net: XmlHierarchyConfigurator: Loading Appender [Console] type: [log4net.Appender.ConsoleAppender] log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: PatternParser: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: XmlHierarchyConfigurator: Setting Property [ConversionPattern] to String value [%d %-5l - %m%n] log4net: PatternParser: Converter [d] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: PatternParser: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False] log4net: PatternParser: Converter [l] Option [] Format [min=5,max=2147483647,leftAlign=True] log4net: PatternParser: Converter [literal] Option [ - ] Format [min=-1,max=2147483647,leftAlign=False] log4net: PatternParser: Converter [m] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: PatternParser: Converter [n] Option [] Format [min=-1,max=2147483647,leftAlign=False] log4net: XmlHierarchyConfigurator: Setting Property [Layout] to object [log4net.Layout.PatternLayout] log4net: XmlHierarchyConfigurator: Created Appender [Console] log4net: XmlHierarchyConfigurator: Adding appender named [Console] to logger [root]. log4net: XmlHierarchyConfigurator: Hierarchy Threshold []

I changed added Console appender but I still don't see text in my logs :(

UPDATE 2: File appenders didn't work but trace appender appeared to be ok. However, that would be nice if someboydy could explain what could happen to file appenders so the question remains kinda opened

2 Answers2

2

I could imagine that you have an encoding problem. Log4net uses an ANSI encoding by default, if your server (or service) and your machine do not use the same encoding you would not be able to read the text in the file.

You could try to configure the encoding like this:

<appender name="INFOFileAppender" type="log4net.Appender.FileAppender">
    <encoding value="unicodeFFFE" />
    ...
Stefan Egli
  • 17,398
  • 3
  • 54
  • 75
  • I've just tried different encoding settings but it didn't help. my log file still consistf of nothing but unreadeable strings. My log file simply looks like this: ?? ?? ?? ?? ?? Each string in log file consists of 9 spaces and two questionmarks regardless of message type and message string – Hanty Mansy Dec 22 '10 at 10:35
  • try to find out what the problem is with internal debugging: http://stackoverflow.com/questions/756125/how-to-track-down-log4net-problems – Stefan Egli Dec 22 '10 at 10:55
  • do not see anything wrong there really. what happens if you configure a trace appender? the normal trace systems seems to be able to write correctly to the log file... http://logging.apache.org/log4net/release/sdk/log4net.Appender.TraceAppender.html – Stefan Egli Dec 22 '10 at 14:43
  • freaking log4net >:( now it works with trace appender, and that's good that I can write that information into text file. Thanks a lot Stefan! – Hanty Mansy Dec 22 '10 at 17:18
  • on my web server file appender and rolling file appender didn't work. On my home computer file appender doesn't work but rolling file appender does. very weird... – Hanty Mansy Dec 22 '10 at 18:14
1

Your level value seems to be wrong, can you try the same configuration with this instead ?

<root>
    <level value="ALL" />
    <appender-ref ref="INFOFileAppender" />
</root>
  • oh.. I just put the text from the last configuration. but the problem with messages still exists – Hanty Mansy Dec 20 '10 at 02:24
  • Are you sure that your AOKLogs.txt is stored in a location where the identity of the application pool is able to write into the file ? Did you check the permissions on that file ? How are you writing into this log ? You can try to create another appender to see if it's an issue the file / configuration of the appender or the initialization and calling of Log4net. – Francois Verbeeck Dec 20 '10 at 09:10
  • currently I can say that the problem is not with the access to file because log4net has the access there and adds strings. In my code I simply call Logger.Log.Info("blablabla"); Seems that now I have to try some other appender – Hanty Mansy Dec 22 '10 at 10:45