maxJsonLength超过使用log4net进行日志记录ElasticSearch appender

时间:2017-10-09 08:23:30

标签: 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: 

有没有办法增加这个限制?

1 个答案:

答案 0 :(得分:1)

您可以为appender发出拉取请求:

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);
    }
相关问题