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