C# StringFormat期间出现异常:输入字符串的格式不正确

C# StringFormat期间出现异常:输入字符串的格式不正确,c#,.net,log4net,C#,.net,Log4net,我正在使用log4net在我的.net应用程序中记录信息,它按预期工作,但它没有记录下面的字符串 {"SuccessfulMessage":null,"FailedMessage":null,"InvalidMessage":"ID 1234 are invalid","PendingMessage":null,"AlreadyProcessedMessage":null,&q

我正在使用log4net在我的.net应用程序中记录信息,它按预期工作,但它没有记录下面的字符串

{"SuccessfulMessage":null,"FailedMessage":null,"InvalidMessage":"ID 1234 are invalid","PendingMessage":null,"AlreadyProcessedMessage":null,"InvalidIDMessage":null,"InvalidOperatorMessage":null}
当我尝试记录上面的字符串时,它会记录下面的内容

<log4net.Error>Exception during StringFormat: Input string was not in a correct format. <format>{"SuccessfulMessage":null,"FailedMessage":null,"InvalidMessage":"ID 1234 are invalid","PendingMessage":null,"AlreadyProcessedMessage":null,"InvalidIDMessage":null,"InvalidOperatorMessage":null}</format><args>{}</args></log4net.Error>

Log4net版本:2.0.8.0

这个字符串格式的异常似乎是由于{和}字符引起的,您可能需要对它们进行转义或用另一个合适的字符替换它们


@鲁兹加鲁斯图的回答帮助我找到了问题的根源

我用下面的代码解决了这个问题。所以基本上我去掉了括号

AppLogger.InfoFormat(message.Trim('{', '}'), args);

如果args为空,则只需调用AppLogger.Infomessage。如果您确实有参数,那么您需要了解InfoFormat采用类似于String.Format的参数。因此,对于至少包含2项的args,您的消息需要是类似于{0}的arg[0]、{1}等字符串。如果您演示了如何转义,您的答案会有很大改进。感谢您的提示,我用C交互窗口中的示例屏幕截图更新了它。@ruzgarustu谢谢,我已对您的答案进行了更新。@ruzgarustu谢谢您,我已对您的答案进行了投票
AppLogger.InfoFormat(message.Trim('{', '}'), args);