我用Elmah.XmlFileErrorLog 尝试了这个解决方案但是我遇到了异常
System.ArgumentNullException was unhandled by user code
Message="Value cannot be null.\r\nParameter name: context"
Source="Elmah"
ParamName="context"
StackTrace:
at Elmah.ErrorSignal.FromContext(HttpContext context) in c:\builds\ELMAH\src\Elmah\ErrorSignal.cs:line 67
at Elmah.ErrorSignal.FromCurrentContext() in c:\builds\ELMAH\src\Elmah\ErrorSignal.cs:line 61
at ElmahHttpErrorHandler.ProvideFault(Exception error, MessageVersion version, Message& fault) in c:\Myapplication\App_Code\Util\ElmahHttpErrorHandler.cs:line 19
at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideFault(Exception e, FaultConverter faultConverter, ErrorHandlerFaultInfo& faultInfo)
at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideMessageFaultCore(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessageCleanup(MessageRpc& rpc)
InnerException:
Run Code Online (Sandbox Code Playgroud)
Web.Config文件
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, …Run Code Online (Sandbox Code Playgroud) LogException或任何派生函数ErrorException等似乎完全忽略传入的异常参数.
我在nlog.config文件中缺少格式属性吗?我正在使用Nlog在VS中安装的模板中的样板.
我希望将异常对象和内部异常的信息添加到日志文件中.然而,添加到日志文件的唯一信息是传递给函数的字符串参数.
事实证明,这ErrorException()实际上没那么有用了Error()
我怎样才能获得更深入的报道.特别是Message所有内部属性的完全递归转储Exceptions?
我正在使用Elmah记录异常.如果请求是基于表单的请求(即Content-Type:application/x-www-form-urlencoded),Elmah非常擅长记录请求主体,但是基于JSON的请求,其中内容类型是application/json,请求正文在错误报告中找不到任何地方.任何人都知道我在哪里可以找到这个请求体,以便我可以正确诊断我的异常?
更新:2012-01-03
作为对基于JSON的请求的含义的澄清,这里是一个带有JSON作为请求主体的示例原始HTTP请求:
PUT http://mycompany.com/api/v1.0/me HTTP/1.1
Host: mycompany.com
Content-Length: 20
Content-Type: application/json
{"city":"Vancouver"}
Run Code Online (Sandbox Code Playgroud) 我习惯在每种方法中使用try/catch块.这样做的原因是我可以在违规点捕获每个异常并记录它.从我的阅读和与他人的对话中我理解,这不是一种流行的观点.人们应该只抓住人们准备处理的事情.但是,如果我没有抓到违规点,那么就有可能永远不会记录这种违规行为并了解它.注意:当我抓住并且不处理时,我仍然会抛出.这允许我让异常传播到将处理它的东西,但仍然让我在违规点记录它.
那么......如何在每个方法中避免try/catch,但仍然在错误发生时记录错误?
当我使用命令java ExceptionTest运行一些java程序时,有时会省略异常并且看起来像
Exception in thread "main" java.lang.NoClassDefFoundError: aa/bb/DD
at SOMEWHERE(unknown source)
Caused by: java.lang.ClassNotFoundException: aaa.bbb.CC
at SOMEWHER(unknown source)
... 13 more
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想看到另外13个例外.是否有选项可以查看所有异常日志?
我们正在使用asp.net配置设置提供的自定义错误.在整个应用程序(PL/BLL/DAL)中,我们没有使用任何try catch.因此,对于任何图层应用程序中的任何异常,都会将用户重定向到配置文件中的自定义错误设置中的自定义错 现在我们要在显示错误页面之前在日志文件中记录以下信息:
- Date & time
- Exception message & strack trace.
- Page Name
- Method Name
- Method Parameter & values.
Run Code Online (Sandbox Code Playgroud)
请帮我如何在自定义错误page_load事件中收集上述信息?
谢谢,
@保罗
我创建了一个CrudAppService。当调用使用它的动态API 招摇,我得到一个通用的500这种描述错误:
{
"result": null,
"targetUrl": null,
"success": false,
"error": {
"code": 0,
"message": "An internal error occurred during your request!",
"details": null,
"validationErrors": null
},
"unAuthorizedRequest": false,
"__abp": true
}
Run Code Online (Sandbox Code Playgroud)
如何获取更详细的异常进行调试?我有什么要启用的吗?
我有一个自定义异常(在可能的其他自定义异常中进一步扩展)。我的项目需要记录发生的所有 customExceptions(及其所有后代)。我有一个可以记录 customException(和其他任何东西)的记录器。这样做的一种方法是在如下处理异常时显式记录异常。
try{
//some exception occur
}
catch(customeException $e)
{
$log->logException($e);
$e->showMessage(); // or do anything that we have to do with the error.
}
Run Code Online (Sandbox Code Playgroud)
由于我们正在记录所有 customExceptions,我能想到的另一种方式是更新 customException 构造函数并在构造函数内部记录异常。通过这种方式,它确保记录所有 customException。但是,如果我们走这条路,我的问题是:
php logging exception-handling custom-exceptions exception-logging
我有一个扫描一组文件的应用程序。这种扫描是并行进行的。我的意思是,如果我上传 5 个文件,将创建五个进程并开始并行执行作业。现在,为了记录正在运行的作业的异常,只有一个日志文件。接下来的问题是,记录器创建了很多日志文件 -
mylogfile.log(actual log file)
mylogfile.log.1
mylogfile.log.2
mylogfile.log.3
mylogfile.log.4
mylogfile.log.5
...
Run Code Online (Sandbox Code Playgroud)
及其各自的锁定文件。下面是我使用的代码片段:
public static Logger getLogger(final String className) {
final Logger logger = Logger.getLogger(className);
FileHandler fh;
try {
// This block configure the logger with handler and formatter
fh = new FileHandler("mylogfile.log", true);
logger.addHandler(fh);
logger.setLevel(Level.ALL);
logger.setUseParentHandlers(false);
fh.setFormatter(new SimpleFormatter());
} catch (final SecurityException e) {
// }
} catch (final IOException e) {
//
}
return logger;
}
Run Code Online (Sandbox Code Playgroud)
我如何确保只使用一个日志文件来写入所有并行运行的作业的异常..?
谢谢,
安尼什
我有一个“重复条目”异常,其中记录了SqlExceptionHelper. 我只需要禁用记录这个异常。我该怎么做?
我正在尝试使用NLog记录内部异常消息.这是我的NLog.config文件的一部分:
<target name="errors" xsi:type="File" layout="${longdate}${newline}
- Exception Message: ${exception:format=Message}${newline}
- InnerException Message: ${exception:innerExceptionSeparator=TEXT}${newline}"
fileName="\Logs\errors-${shortdate}.log"
concurrentWrites="true" />
</targets>
Run Code Online (Sandbox Code Playgroud)
我正在为NLog.config文件和See the inner exception for details两行获取相同的消息.Exception MessageInnerException Message
在我的作品中,我们制作的网站就像它们已经过时了(即每年有很多网站)
我想在所有这些公司实践中安装ELMAH,然后集中记录所有内容以供我们的开发人员查看.这个过程必须非常简单,否则它的使用不会起飞.
我正在考虑建立一个中央Google阅读器帐户,并将ELMAH安装的所有RSS源连接到其中.
我担心的是谷歌表示他们只检查一小时一次,这意味着如果你使用ELMAH的"内存"存储,那么当应用程序池重新启动时,错误可能会被遗漏.
电子邮件是相当不错的,但如果每个人都开始收到ELMAH错误消息,他们将开始忽略它们 - 也许我可以设置一个额外的交换邮箱,为此保持分离?
你的想法将不胜感激
(ps这可能被认为是主观的 - 但我相信有人可能在一些主观答案中有答案,使其成为一个有效的问题)
我用 Java 管理一个开源项目,在我的代码中有大约 20 个地方我使用以下模式记录异常(slf4j 版本 1.7.30)
private static final Logger logger = LoggerFactory.getLogger();
...
try {
interfaces = NetworkInterface.getNetworkInterfaces();
} catch (SocketException ex) {
logger.error("Socket exception when retrieving interfaces: {}", ex);
}
Run Code Online (Sandbox Code Playgroud)
或类似
try {
// stuff
} catch (IOException ioe) {
logger.error("Server error: {}", ioe);
}
Run Code Online (Sandbox Code Playgroud)
从今天开始,SonarCloud自动代码质量审查已开始使用规则标记这些java:S2275(Printf 样式的格式字符串不应导致运行时出现意外行为),并带有特定消息“参数不足”。
编辑:值得注意的是,当 anException是最后一个参数时,这似乎总是发生。下面的模式确实没有标志:
try {
// Server connection code
} catch (IOException e) {
logger.error("Server Connection error: {}", e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
logging ×5
java ×4
c# ×3
elmah ×3
.net ×2
nlog ×2
asp.net-4.0 ×1
asp.net-core ×1
exception ×1
php ×1
slf4j ×1
sonarcloud ×1
wcf ×1