json - maxJsonLength超出了使用log4net ElasticSearch追加器进行的日志记录

标签 json exception elasticsearch log4net log4net-appender

我们正在使用log4net.ElasticSearch appender,将应用程序日志消息发送到ElasticSearch。

为了调试/支持目的,我们经常将服务请求和响应记录为上下文对象以记录事件,以进行调试/支持-似乎有时序列化时的响应可能太大,从而导致以下异常:

System.InvalidOperationException occurred
  HResult=-2146233079
  Message=Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
  Source=System.Web.Extensions
  StackTrace:
   at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat)
   at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, SerializationFormat serializationFormat)
   at log4net.ElasticSearch.ExtensionMethods.ToJson[T](T self)
  InnerException: 

有什么办法可以增加这个限制?

最佳答案

您可以对附加器发出拉出请求:

https://github.com/jptoto/log4net.ElasticSearch/blob/f5d122526f410d1294bc8d3aeb5a94379800f552/src/log4net.ElasticSearch/ExtensionMethods.cs

    public static string ToJson<T>(this T self)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        serializer.MaxJsonLength = Int32.MaxValue;
        return serializer.Serialize(self);
    }

关于json - maxJsonLength超出了使用log4net ElasticSearch追加器进行的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46641823/

相关文章:

Java 事后调试?

elasticsearch - 在 NEST 5.5.0 中替换 .Filtered

indexing - 在 ElasticSearch 中重新索引索引以更改分片数

PHP进程贴json

java - Java JSON 解析器可以访问远程服务吗?

c# - 通过反射设置属性值不起作用,而在 C# 中直接设置它可以工作

java - 试图让 Elasticsearch 运行

php - Mysql 查询 AnyChart JSON 数据缺少日期

php - json解码中的格式化

java - 如何在java中不向server.log抛出异常