You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-user@logging.apache.org by oritne <or...@gmail.com> on 2010/06/07 16:10:12 UTC

Problem regarding LoggerManager

Hi,

I really need help on this issue. I've looked for a solution everywhere but
haven't found one.
Here is my problem:

In the company I work for, A log4net wrapper is being used in order to write
logs into files (and database). The problem is, that when I try to write
details as line number and file name into the log file, I get question
marks, and it happens IN DEBUG MODE, where I have a pdb file.

I've done some testing and found out that it happens only when I use
LoggerManager object. If I use LogManager object it works just fine.

Here is how I use it:

The Log.config:

<logger name="CodeExamples.Program">
      <level value="DEBUG"/>
      <appender-ref ref="Global" />     
 </logger>

<appender name="Global" type="log4net.Appender.RollingFileAppender">      
            
      
      
      
            
      
     
      <layout type="log4net.Layout.PatternLayout">
        
                
        
      </layout>
    </appender>

This piece of code prints out the question marks:
private ILogger logger;
log4net.Config.XmlConfigurator.ConfigureAndWatch(new
FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
logger = LoggerManager.GetLogger(Assembly.GetCallingAssembly(),
MethodBaseType.FullName);
logger.Log(MethodBaseType, Level.Error, Message, null);

Here is its output:
[07 06 2010 16:11:09,343] ERROR: Attempted to divide by zero.; Logger:
CodeExamples.Program; File: ?; Line: ?; Type: ?;

This one works just fine:
private ILog log;
log4net.Config.XmlConfigurator.ConfigureAndWatch(new
FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
log = LogManager.GetLogger(Assembly.GetCallingAssembly(),
MethodBaseType.FullName);
log.Error(Message, null); 


and the output:
[07 06 2010 16:11:09,365] ERROR: Attempted to divide by zero.; Logger:
CodeExamples.Program; File: D:\Projects\MyLogger\MyLog.cs; Line: 41; Type:
MyLogger.MyLog;


If I could, I would use only LogManager, but the wrapper I work with uses
the LoggerManager, and touching it is the last thing I want to do...

Any help will be appreciated!

Thanks.
-- 
View this message in context: http://old.nabble.com/Problem-regarding-LoggerManager-tp28805753p28805753.html
Sent from the Log4net - Users mailing list archive at Nabble.com.


Re: Problem regarding LoggerManager

Posted by oritne <or...@gmail.com>.
Sorry. The param part just vanished.. here is the main part of it:

param name="ConversionPattern" value="%newline[%date{dd MM yyyy
HH:mm:ss,fff}] %level: %message; Logger: %logger{3}; File: %file; Line:
%line; Type: %type;%newline"


oritne wrote:
> 
> Hi,
> 
> I really need help on this issue. I've looked for a solution everywhere
> but haven't found one.
> Here is my problem:
> 
> In the company I work for, A log4net wrapper is being used in order to
> write logs into files (and database). The problem is, that when I try to
> write details as line number and file name into the log file, I get
> question marks, and it happens IN DEBUG MODE, where I have a pdb file.
> 
> I've done some testing and found out that it happens only when I use
> LoggerManager object. If I use LogManager object it works just fine.
> 
> Here is how I use it:
> 
> The Log.config:
> 
> <logger name="CodeExamples.Program">
>       <level value="DEBUG"/>
>       <appender-ref ref="Global" />     
>  </logger>
> 
> <appender name="Global" type="log4net.Appender.RollingFileAppender">      
>             
>       
>       
>       
>             
>       
>      
>       <layout type="log4net.Layout.PatternLayout">
>         
>                 
>         
>       </layout>
>     </appender>
> 
> This piece of code prints out the question marks:
> private ILogger logger;
> log4net.Config.XmlConfigurator.ConfigureAndWatch(new
> FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
> logger = LoggerManager.GetLogger(Assembly.GetCallingAssembly(),
> MethodBaseType.FullName);
> logger.Log(MethodBaseType, Level.Error, Message, null);
> 
> Here is its output:
> [07 06 2010 16:11:09,343] ERROR: Attempted to divide by zero.; Logger:
> CodeExamples.Program; File: ?; Line: ?; Type: ?;
> 
> This one works just fine:
> private ILog log;
> log4net.Config.XmlConfigurator.ConfigureAndWatch(new
> FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
> log = LogManager.GetLogger(Assembly.GetCallingAssembly(),
> MethodBaseType.FullName);
> log.Error(Message, null); 
> 
> 
> and the output:
> [07 06 2010 16:11:09,365] ERROR: Attempted to divide by zero.; Logger:
> CodeExamples.Program; File: D:\Projects\MyLogger\MyLog.cs; Line: 41; Type:
> MyLogger.MyLog;
> 
> 
> If I could, I would use only LogManager, but the wrapper I work with uses
> the LoggerManager, and touching it is the last thing I want to do...
> 
> Any help will be appreciated!
> 
> Thanks.
> 

-- 
View this message in context: http://old.nabble.com/Problem-regarding-LoggerManager-tp28805753p28805789.html
Sent from the Log4net - Users mailing list archive at Nabble.com.


Re: Problem regarding LoggerManager

Posted by oritne <or...@gmail.com>.
Thanks a lot.
In the meantime I changed the object that I work with into LogManager
(instead of LoggingManager) and it works just fine.
Thanks anyway!
Orit.


Ron Grabowski wrote:
> 
> Your wrapper needs to pass its Type into log4net's Log method so the code
> that processes StackTrace information knows to skip over certain frames:
> 
> http://code.google.com/p/mybatisnet/source/browse/tags/cs%20release%201.3/IBatisNet.Common.Logging.Log4Net/Log4NetLogger.cs
> 
> public class MyCompanysWrapperLogger : ILog
> {
> 
>  private readonly static Type _declaringType =
> typeof(MyCompanysWrapperLogger);
>  private ILogger _log4netLogger;
> 
>  internal MyCompanysWrapperLogger(ILog log)
>  {
>   _log4netLogger = log.Logger;
>  }
> 
>  public void Info(object message, Exception e)
>  {
>   _logger.Log(declaringType, log4net.Core.Level.Info, message, e);
>  }
> }
> 
> 
> 
> ----- Original Message ----
> From: oritne <or...@gmail.com>
> To: log4net-user@logging.apache.org
> Sent: Mon, June 7, 2010 10:10:12 AM
> Subject: Problem regarding LoggerManager
> 
> 
> Hi,
> 
> I really need help on this issue. I've looked for a solution everywhere
> but
> haven't found one.
> Here is my problem:
> 
> In the company I work for, A log4net wrapper is being used in order to
> write
> logs into files (and database). The problem is, that when I try to write
> details as line number and file name into the log file, I get question
> marks, and it happens IN DEBUG MODE, where I have a pdb file.
> 
> I've done some testing and found out that it happens only when I use
> LoggerManager object. If I use LogManager object it works just fine.
> 
> Here is how I use it:
> 
> The Log.config:
> 
> <logger name="CodeExamples.Program">
>       <level value="DEBUG"/>
>       <appender-ref ref="Global" />    
> </logger>
> 
> <appender name="Global" type="log4net.Appender.RollingFileAppender">      
>             
>       
>       
>       
>             
>       
>     
>       <layout type="log4net.Layout.PatternLayout">
>         
>                 
>         
>       </layout>
>     </appender>
> 
> This piece of code prints out the question marks:
> private ILogger logger;
> log4net.Config.XmlConfigurator.ConfigureAndWatch(new
> FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
> logger = LoggerManager.GetLogger(Assembly.GetCallingAssembly(),
> MethodBaseType.FullName);
> logger.Log(MethodBaseType, Level.Error, Message, null);
> 
> Here is its output:
> [07 06 2010 16:11:09,343] ERROR: Attempted to divide by zero.; Logger:
> CodeExamples.Program; File: ?; Line: ?; Type: ?;
> 
> This one works just fine:
> private ILog log;
> log4net.Config.XmlConfigurator.ConfigureAndWatch(new
> FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
> log = LogManager.GetLogger(Assembly.GetCallingAssembly(),
> MethodBaseType.FullName);
> log.Error(Message, null); 
> 
> 
> and the output:
> [07 06 2010 16:11:09,365] ERROR: Attempted to divide by zero.; Logger:
> CodeExamples.Program; File: D:\Projects\MyLogger\MyLog.cs; Line: 41; Type:
> MyLogger.MyLog;
> 
> 
> If I could, I would use only LogManager, but the wrapper I work with uses
> the LoggerManager, and touching it is the last thing I want to do...
> 
> Any help will be appreciated!
> 
> Thanks.
> -- 
> View this message in context:
> http://old.nabble.com/Problem-regarding-LoggerManager-tp28805753p28805753.html
> Sent from the Log4net - Users mailing list archive at Nabble.com.
> 
> 

-- 
View this message in context: http://old.nabble.com/Problem-regarding-LoggerManager-tp28805753p28869549.html
Sent from the Log4net - Users mailing list archive at Nabble.com.


Re: Problem regarding LoggerManager

Posted by Ron Grabowski <ro...@yahoo.com>.
Your wrapper needs to pass its Type into log4net's Log method so the code that processes StackTrace information knows to skip over certain frames:

http://code.google.com/p/mybatisnet/source/browse/tags/cs%20release%201.3/IBatisNet.Common.Logging.Log4Net/Log4NetLogger.cs

public class MyCompanysWrapperLogger : ILog
{

 private readonly static Type _declaringType = typeof(MyCompanysWrapperLogger);
 private ILogger _log4netLogger;

 internal MyCompanysWrapperLogger(ILog log)
 {
  _log4netLogger = log.Logger;
 }

 public void Info(object message, Exception e)
 {
  _logger.Log(declaringType, log4net.Core.Level.Info, message, e);
 }
}



----- Original Message ----
From: oritne <or...@gmail.com>
To: log4net-user@logging.apache.org
Sent: Mon, June 7, 2010 10:10:12 AM
Subject: Problem regarding LoggerManager


Hi,

I really need help on this issue. I've looked for a solution everywhere but
haven't found one.
Here is my problem:

In the company I work for, A log4net wrapper is being used in order to write
logs into files (and database). The problem is, that when I try to write
details as line number and file name into the log file, I get question
marks, and it happens IN DEBUG MODE, where I have a pdb file.

I've done some testing and found out that it happens only when I use
LoggerManager object. If I use LogManager object it works just fine.

Here is how I use it:

The Log.config:

<logger name="CodeExamples.Program">
      <level value="DEBUG"/>
      <appender-ref ref="Global" />    
</logger>

<appender name="Global" type="log4net.Appender.RollingFileAppender">      
            
      
      
      
            
      
    
      <layout type="log4net.Layout.PatternLayout">
        
                
        
      </layout>
    </appender>

This piece of code prints out the question marks:
private ILogger logger;
log4net.Config.XmlConfigurator.ConfigureAndWatch(new
FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
logger = LoggerManager.GetLogger(Assembly.GetCallingAssembly(),
MethodBaseType.FullName);
logger.Log(MethodBaseType, Level.Error, Message, null);

Here is its output:
[07 06 2010 16:11:09,343] ERROR: Attempted to divide by zero.; Logger:
CodeExamples.Program; File: ?; Line: ?; Type: ?;

This one works just fine:
private ILog log;
log4net.Config.XmlConfigurator.ConfigureAndWatch(new
FileInfo("D:\\Projects\\CodeExamples\\bin\\Debug\\Log.config"));
log = LogManager.GetLogger(Assembly.GetCallingAssembly(),
MethodBaseType.FullName);
log.Error(Message, null); 


and the output:
[07 06 2010 16:11:09,365] ERROR: Attempted to divide by zero.; Logger:
CodeExamples.Program; File: D:\Projects\MyLogger\MyLog.cs; Line: 41; Type:
MyLogger.MyLog;


If I could, I would use only LogManager, but the wrapper I work with uses
the LoggerManager, and touching it is the last thing I want to do...

Any help will be appreciated!

Thanks.
-- 
View this message in context: http://old.nabble.com/Problem-regarding-LoggerManager-tp28805753p28805753.html
Sent from the Log4net - Users mailing list archive at Nabble.com.