gpt4 book ai didi

mysql - log4net 到 MySql JSON 数据

转载 作者:行者123 更新时间:2023-11-30 21:45:39 25 4
gpt4 key购买 nike

我正在为 log4net 使用 MySql appender

    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
<connectionString value="Server=127.0.0.1;Database=logging;Uid=root;Pwd=mysql;" />
<commandText value="INSERT INTO log (Date,Thread,Level,Logger,Message,Exception, UserInput) VALUES (?log_date, ?thread, ?log_level, ?logger, ?message, ?exception, ?user_input);" />
<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="?user_input" />
<dbType value="object" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{user_input}" />
</layout>
</parameter>
</appender>

user_input 是我想写入我的数据库的 JSON 数据,我在 MySql 中有一列是 JSON 类型,在我的代码中我执行以下操作:

log4net.LogicalThreadContext.Properties["user_input"] =  new var userInput = new Dictionary<string, object>()
{ "Key", new Dictionary<string, object>() {
{ "C", "R" },
{ "P", "A" },
{ "Pm", "H" },
{ "Ch", "D" },
{ "Date", DateTime.Now }
} },
{ "FirstName", "John" },
{ "LastName", "Doe" },
};

我收到以下错误:

Cannot create a JSON value f rom a string with CHARACTER SET 'binary'.

最佳答案

我可以建议 log4net.Ext.Json ?安装 nuget 包并尝试类似的操作:

...
<parameter>
<parameterName value="?user_input" />
<dbType value="object" />
<size value="4000" />
<layout type='log4net.Layout.SerializedLayout, log4net.Ext.Json'>
<member value="user_input" />
</layout>
</parameter>
...

披露 #1:我还没有尝试过这个。很可能,您需要进行更多调整,因为这会产生 {"user_input":{...your data...}}

披露 #2:我是作者

或者,您可以直接使用 JSON 渲染器,如 Log4net stops using custom renderers 中所述。 .然后使用通常的 PattenLayout。

关于mysql - log4net 到 MySql JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49616354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com