Add support for type aliases in config file
-------------------------------------------

         Key: LOG4NET-30
         URL: http://issues.apache.org/jira/browse/LOG4NET-30
     Project: Log4net
        Type: New Feature
    Reporter: Ron Grabowski
    Priority: Trivial


IBatisNet uses "type" attributes in their xml config files:

 type="Company.Project.Foo.Data.Entity.Product, Company.Project.Data"
 type="Company.Project.Foo.Data.Entity.Category, Company.Project.Data"
 type="Company.Project.Foo.Data.Entity.User, Company.Project.Data"

to save the user from having to re-type long strings every time something 
references a Product, Category, etc. They define an <alias> node that contains 
<typeAlias> entries:

 <alias>
  <typeAlias alias="Product" type="Company.Project.Foo.Data.Entity.Product, 
Company.Project.Data" />
  <typeAlias alias="Category" type="Company.Project.Foo.Data.Entity.Product, 
Company.Project.Data" />
  <typeAlias alias="User" type="Company.Project.Foo.Data.Entity.Product, 
Company.Project.Data" />
 </alias>

Wherever I have to specify a type, I may use one of the aliases I defined at 
the top of the file.

It would be nice if log4net supported a similiar concept. It would also be nice 
if log4net shipped with some default aliases. I think normal casing would be ok:

 FileAppender -> log4net.Appender.FileAppender

An example incorporating the above suggestions would be (this will probably 
wrap when it posts to the mailing list):

<alias>
 <typeAlias alias="SessionContextPatternConverter" 
type="log4netAspExtensions.SessionContextPatternConverter, 
log4netAspExtensions" />
 <typeAlias alias="CacheContextPatternConverter" 
type="log4netAspExtensions.CacheContextPatternConverter, log4netAspExtensions" 
/>
 <typeAlias alias="RequestContextPatternConverter" 
type="log4netAspExtensions.RequestContextPatternConverter, 
log4netAspExtensions" />
 <typeAlias alias="ApplicationContextPatternConverter" 
type="log4netAspExtensions.ApplicationContextPatternConverter, 
log4netAspExtensions" />
</alias>

<appender name="LoginFileAppender" type="FileAppender">
 <file value="c:/inetpub/wwwroot/Logs/Logins.txt" />
 <layout type="PatternLayout">
  <converter>
    <name value="asp-session" />
    <type value="SessionContextPatternConverter" />
  </converter>
  <conversionPattern value="%5p %d (%c:%L) - [%asp-session{UserId}] %m%n" />
 </layout>
</appender>

I haven't fully looked into the <convertor> node to see if it can support this 
style of attributes but an even shorted syntax might be:

<appender name="LoginFileAppender" type="FileAppender">
 <file value="c:/inetpub/wwwroot/Logs/Logins.txt" />
 <layout type="PatternLayout">
  <converter name="asp-session" type="SessionContextPatternConverter" />
  <conversionPattern value="%5p %d (%c:%L) - [%asp-session{UserId}] %m%n" />
 </layout>
</appender>

It should be possible to overwrite the builtin aliases. Had I overridden 
FileAppender:

 <typeAlias alias="FileAppender" type="log4netAspExtensions.AspNetFileAppender, 
log4netAspExtensions" />

I would be able to declare my appender with support for the ~ character:

<appender name="LoginFileAppender" type="FileAppender">
 <file value="~/Logs/Login.txt" />
 <layout type="PatternLayout">
  <converter name="asp-session" type="SessionContextPatternConverter" />
  <conversionPattern value="%5p %d (%c:%L) - [%asp-session{UserId}] %m%n" />
 </layout>
</appender>

I think that the above changes would descrease the size of the config file and 
increase the files readability.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to