Я пытаюсь создать несколько таблиц с пользовательским параметром, используя Log4Net. Я могу создать несколько таблиц, пользовательских столбцов и данные вставляются. Но, похоже, данные вставляются в обе таблицы, чего не ожидалось (прикрепленное изображение для справки). Ниже приведен мой файл и код App.config. Это ограничения Log4Net? Пожалуйста, предложите мне, где я иду не так.
У меня второй вопрос к Log4Net. Мне нужно приложение для ведения журнала с большим количеством пользовательских параметров. Я пытался включить Log4Net для этого требования, поскольку он широко используется для повышения производительности. Но нам нужно написать несколько строк кода для записи одной строки в базе данных. Пожалуйста, предложите, подходит ли Log4Net или я должен пойти для создания приложения Custom Logger
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="ADONetAppender1" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=localhost;uid=xylemadmin;password=XylemInc@2018; database=LoggingLeafDB" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[MyColumn])
VALUES (@log_date, @thread, @log_level, @logger, @message, @exception,@mynewcolumn)" />
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</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="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter>
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.ExceptionLayout"/>
</parameter>
<parameter>
<parameterName value="@mynewcolumn"/>
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{mynewcolumn}" />
</layout>
</parameter>
</appender>
<appender name="ADONetAppender2" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=localhost;uid=xylemadmin;password=XylemInc@2018; database=LoggingLeafDB" />
<commandText value="INSERT INTO MyLog ([Date],[Thread],[Level],[Message],[CustomColumn])
VALUES (@log_date, @thread,@log_level,@message,@customcolumn)" />
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</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>
<parameter>
<parameterName value="@customcolumn"/>
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{customcolumn}" />
</layout>
</parameter>
</appender>
<!--<appender name="ADONetAppender1" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=localhost;uid=xylemadmin;password=XylemInc@2018; database=LoggingLeafDB" />
<commandText
value="INSERT INTO Log ([AppName],[EventDate],[EventName],[LogLevel],[LogSource],[LogMessage],[Exception],[LogInfo1],[LogInfo2],[LogInfo3],[LogInfo4],[LogInfo5])
VALUES (@appname, @eventdate, @eventname, @loglevel, @logsource, @logmessage,@exception,@loginfo1,@loginfo2,@loginfo3,@loginfo4,@loginfo5)" />
<parameter>
<parameterName value="@appname"/>
<dbType value="String"/>
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{appname}" />
</layout>
</parameter>
<parameter>
<parameterName value="@eventdate"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@eventname"/>
<dbType value="String"/>
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{eventname}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@loglevel"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value="@logsource"/>
<dbType value="String"/>
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value="@logmessage" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<parameter>
<parameterName value="@loginfo1" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{loginfo1}" />
</layout>
</parameter>
<parameter>
<parameterName value="@loginfo2" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{loginfo2}" />
</layout>
</parameter>
<parameter>
<parameterName value="@loginfo3" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{loginfo3}" />
</layout>
</parameter>
<parameter>
<parameterName value="@loginfo4" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{loginfo4}" />
</layout>
</parameter>
<parameter>
<parameterName value="@loginfo5" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{loginfo5}" />
</layout>
</parameter>
</appender>-->
<root>
<level value="ALL" />
<appender-ref ref="ADONetAppender1" />
<appender-ref ref="ADONetAppender2" />
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
class Program
{
private static readonly log4net.ILog log1 = log4net.LogManager.GetLogger("ADONetAppender1");
private static readonly log4net.ILog log2 = log4net.LogManager.GetLogger("ADONetAppender2");
static void Main(string[] args)
{
try
{
log4net.Config.XmlConfigurator.Configure();
log4net.LogicalThreadContext.Properties["mynewcolumn"] = "Log table Custom column data";
string Param1 = "Somedata1";
string Param2 = "Somedata1";
string Param3 = "Somedata1";
log1.DebugFormat("Debug Format: {0} , {1} {2}", Param1, Param2, Param3);
log4net.LogicalThreadContext.Properties["customcolumn"] = "MyLog table custom column data";
string Err1 = "Error 1";
string Err2 = "Error 2";
log2.ErrorFormat("Debug Formam: {0} , {1}", Err1, Err2);
}
catch (Exception ex)
{
throw;
}
}
}