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 Ron Grabowski <ro...@yahoo.com> on 2007/08/03 04:33:37 UTC
Re: Add or change parameter value dynamicly
Is your ProcessID a special variable that isn't available during startup or do you just want to include the %processid pattern?
----- Original Message ----
From: arsenmkrt <mk...@gmail.com>
To: log4net-user@logging.apache.org
Sent: Tuesday, July 31, 2007 8:16:43 AM
Subject: Add or change parameter value dynamicly
Hello. I have a table T_Audit where i want to write my log messages in oracle
db. it has a field processid that i want to put dynamically its the
identifier of the process that is doing log not the real process just the id
of process table from my database so i decide to write my appender like this
<appender name="AdoNetAppender_Oracle"
type="log4net.Appender.AdoNetAppender">
<connectionType value="System.Data.OracleClient.OracleConnection,
System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
<connectionString value="my connection string" />
<commandText value="INSERT INTO T_AUDIT
(LOG_ID,RM_METADATA_ID,PROCESS_ID,PROCESS_TYPE,LOG_DATE,SEVERITY,LOG_MESSAGE)
VALUES
(SEQ_AUDIT.NEXTVAL,:rmmetadataid,:processid,:processtype,:log_date,:log_level,:message)"
/>
<bufferSize value="128" />
<parameter>
<parameterName value=":rmmetadataid" />
<dbType value="Int32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="285" />
</layout>
</parameter>
<parameter>
<parameterName value=":processtype" />
<dbType value="Int32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="1" />
</layout>
</parameter>
<parameter>
<parameterName value=":log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value=":log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value=":message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
i add the processID parameter programiticaly like this
log4net.Repository.Hierarchy.Hierarchy hierarchy = null;
log4net.Repository.Hierarchy.Logger logger = null;
hierarchy
=(log4net.Repository.Hierarchy.Hierarchy)LoggerManager.GetRepository(Assembly.GetCallingAssembly());
//// Configure root logger
logger = hierarchy.Root;
log4net.Appender.AdoNetAppender adoAppender =
(log4net.Appender.AdoNetAppender)logger.GetAppender("AdoNetAppender_Oracle");
log4net.Appender.AdoNetAppenderParameter processIdParam = new
log4net.Appender.AdoNetAppenderParameter();
processIdParam.ParameterName = ":processid";
processIdParam.DbType = System.Data.DbType.Int32;
PatternLayout pl = new PatternLayout();
RawLayoutConverter rlc = new RawLayoutConverter();
pl.ConversionPattern = ProcessID.ToString();
processIdParam.Layout = (IRawLayout)rlc.ConvertFrom(pl);
adoAppender.AddParameter(processIdParam);
adoAppender.ActivateOptions();
hierarchy.Configured = true;
and call xmlconfigurator to configure logging before adding parameter
programiticaly. but it doesn't work. please help to solve this problem...
note that when i add procesis parameter manually to config file it all works
well.
--
View this message in context: http://www.nabble.com/Add-or-change-parameter-value-dynamicly-tf4192651.html#a11923011
Sent from the Log4net - Users mailing list archive at Nabble.com.
Re: Add or change parameter value dynamicly
Posted by arsenmkrt <mk...@gmail.com>.
OK i found the solution i just use mdc . I wrote parametr
<parameter>
<parameterName value=":processid" />
<dbType value="Int32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%X{prid}" />
</layout>
</parameter>
And set the value from my brogram like this
public void SetProcessID(int ProcessID)
{
MDC.Set("prid", ProcessID.ToString());
}
I found that here
http://weblogs.asp.net/drnetjes/archive/2005/02/16/374780.aspx
Thanks for help.
Ron Grabowski wrote:
>
> Is your ProcessID a special variable that isn't available during startup
> or do you just want to include the %processid pattern?
>
> ----- Original Message ----
> From: arsenmkrt <mk...@gmail.com>
> To: log4net-user@logging.apache.org
> Sent: Tuesday, July 31, 2007 8:16:43 AM
> Subject: Add or change parameter value dynamicly
>
>
> Hello. I have a table T_Audit where i want to write my log messages in
> oracle
> db. it has a field processid that i want to put dynamically its the
> identifier of the process that is doing log not the real process just the
> id
> of process table from my database so i decide to write my appender like
> this
>
> <appender name="AdoNetAppender_Oracle"
> type="log4net.Appender.AdoNetAppender">
> <connectionType value="System.Data.OracleClient.OracleConnection,
> System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089" />
> <connectionString value="my connection string" />
> <commandText value="INSERT INTO T_AUDIT
> (LOG_ID,RM_METADATA_ID,PROCESS_ID,PROCESS_TYPE,LOG_DATE,SEVERITY,LOG_MESSAGE)
> VALUES
> (SEQ_AUDIT.NEXTVAL,:rmmetadataid,:processid,:processtype,:log_date,:log_level,:message)"
> />
> <bufferSize value="128" />
> <parameter>
> <parameterName value=":rmmetadataid" />
> <dbType value="Int32" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="285" />
> </layout>
> </parameter>
> <parameter>
> <parameterName value=":processtype" />
> <dbType value="Int32" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="1" />
> </layout>
> </parameter>
> <parameter>
> <parameterName value=":log_date" />
> <dbType value="DateTime" />
> <layout type="log4net.Layout.RawTimeStampLayout" />
> </parameter>
> <parameter>
> <parameterName value=":log_level" />
> <dbType value="String" />
> <size value="50" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%level" />
> </layout>
> </parameter>
> <parameter>
> <parameterName value=":message" />
> <dbType value="String" />
> <size value="4000" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%message" />
> </layout>
> </parameter>
> </appender>
>
> i add the processID parameter programiticaly like this
>
> log4net.Repository.Hierarchy.Hierarchy hierarchy = null;
> log4net.Repository.Hierarchy.Logger logger = null;
> hierarchy
> =(log4net.Repository.Hierarchy.Hierarchy)LoggerManager.GetRepository(Assembly.GetCallingAssembly());
>
> //// Configure root logger
> logger = hierarchy.Root;
> log4net.Appender.AdoNetAppender adoAppender =
> (log4net.Appender.AdoNetAppender)logger.GetAppender("AdoNetAppender_Oracle");
>
> log4net.Appender.AdoNetAppenderParameter processIdParam = new
> log4net.Appender.AdoNetAppenderParameter();
> processIdParam.ParameterName = ":processid";
> processIdParam.DbType = System.Data.DbType.Int32;
> PatternLayout pl = new PatternLayout();
> RawLayoutConverter rlc = new RawLayoutConverter();
> pl.ConversionPattern = ProcessID.ToString();
> processIdParam.Layout = (IRawLayout)rlc.ConvertFrom(pl);
> adoAppender.AddParameter(processIdParam);
> adoAppender.ActivateOptions();
>
> hierarchy.Configured = true;
> and call xmlconfigurator to configure logging before adding parameter
> programiticaly. but it doesn't work. please help to solve this problem...
> note that when i add procesis parameter manually to config file it all
> works
> well.
> --
> View this message in context:
> http://www.nabble.com/Add-or-change-parameter-value-dynamicly-tf4192651.html#a11923011
> Sent from the Log4net - Users mailing list archive at Nabble.com.
>
>
>
>
>
>
--
View this message in context: http://www.nabble.com/Add-or-change-parameter-value-dynamicly-tf4192651.html#a11977492
Sent from the Log4net - Users mailing list archive at Nabble.com.