Friday, May 18, 2012
 
The best way to analyze your logs! Minimize
 Log4Net Mail archive   

The Log4Net mailing list is a great source of information about using log4Net, in this forum we collect all the messages in the log4net user list and some selected threads from the developer list.

Subject: Replacing text in log messages
Prev Next
You are not authorized to post a reply.

Author Messages
Lars Bjønnes

10/02/2008 8:44 PM  

Hello,

I am trying to replace certain text strings in log messages, based on
a regular expression. The goal is to prevent sensitive information
being logged.

Is there any easy way of doing this?

I have so far tried to write a simple implementation of the
IObjectRenderer as  a small end to end test

namespace Log4netRegexpRenderer
{
     public class RegexpObjectRenderer : IObjectRenderer
     {
         /// <summary>
         /// Proceed to rendering for a given object.
         /// </summary>
         public string DoRender(RendererMap rendererMap, object obj)
         {
             return "Yeah, we're getting somehwere";
         }
     }
}

Then adding this to log4net.config:


     <renderer
renderingClass="Log4netRegexpRenderer.RegexpObjectRenderer,
Log4netRegexpRenderer" renderedClass="System.String, mscorlib" />

When I set the internal debug property in log4net to true, I can see
that my assembly is pickedup and that there indeed is initialized an
instance of my RegexpObjectRenderer.

However, it never calls DoRender in my custom object renderer. Is it
possible to catch System.String/string by (mis)using the
ObjectRenderer, or do I have to use custom objects? (Which works fine)

(I have no problems getting a custom renderer to work with my own
custom classes, but no luck with System.String).

Suggestions?

Regards,

Lars


Ron Grabowski

10/02/2008 10:58 PM  

IObjectRender was designed to allow custom objects (i.e. non-value objects) to be formatted. log4net optmizes string messages by bypassing the IObjectRenderer code. I don't think a lot of people use IObjectRender. If you want to use an object renderer you can wrap your sensitive messages like this:

 SensitiveString sensitiveString = new SensitiveString("My password is 1234");
 log.Info(sensitiveString);

then register the renderer for the SensitiveString class. I'd probably write a ForwardingAppender or a Filter that alters the message before the real Appender receives the message.

Peter Drier

10/03/2008 2:49 AM  
Or, if you don't want to slow down every message, make it safe before you send to log4net..

String sensitiveString = "My password is 1234";
log.Info(l4nHelper.MakeSafe(sensitiveString));

you should know before you log it if it's risky or not..  and I'd hate to add an extra step to logging every message (100k+) when only 3-5 messages a day are sensitive..  stats from my latest app..

-Peter
 
You are not authorized to post a reply.
Forums > Log4Net > Log4Net Mail archive > Replacing text in log messages



ActiveForums 3.7

 

 

 

 

 

 

 

 

Log4Net Dashboard

Log analysis and monitoring made easy!

Log4Net Dashboard is a log viewer that can read log statements from a variety of logging output targets.

You can download a free developer version.

  

Check it out!

On the demonstration site you can try it  with live data.demo.l4ndash.com - Try Log4Net Dashboard with live data

The mail archive is a copy of all the mail sent to the mail address: log4net-user@logging.apache.org, organized as a forum.

If you would like to participate in the mail list, send a mail to log4net-user-subscribe@logging.apache.org.

More information about the mailing list is available on: http://logging.apache.org/log4net/support.html

 

A complete topic list is available and can be viewed here (warning, it takes some time to load)

 

Copyright 2005-2008 by FaktNet AS Terms Of Use Privacy Statement