在IIS 7下运行的ASP.Net 3.5似乎不允许开箱即用.
if (!EventLog.SourceExists("MyAppLog"))
EventLog.CreateEventSource("MyAppLog", "Application");
EventLog myLog = new EventLog();
myLog.Source = "MyAppLog";
myLog.WriteEntry("Message");
Run Code Online (Sandbox Code Playgroud) 我正在尝试评估一些可用于.NET框架的最佳日志实用程序,例如Microsoft Enterprise Library,Log4Net,elmah.
已经完成这项工作的人可以帮助我列出市场上最好的利弊.
谢谢和问候,Rajeev Ranjan Lall
我经常对我必须包含在我的代码中的日志记录数量感到沮丧,这让我想知道是否有更好的做事方式.
我不知道这是否已经完成或是否有人提出了更好的想法,但我想知道是否有人知道将"记录器""注入"应用程序,以便被动地监视线程并安静地记录日志流程发生时不必执行以下操作:
public void MyProcess(int a, string b, object c)
{
log(
String.Format(
"Entering process MyProcess with arguments: [a] = [{0}]; [b] = [{1}]; [c] = [{2}]",
a.ToString(),
b,
c.ToString()
);
try
{
int d = DoStuff(a)
log(
String.Format(
"DoStuff({0}) returned value {1}",
a.ToString(),
d.ToString()
)
);
}
catch (Exception ex)
{
log(
String.Format("An exception occurred during process DoStuff({0})\nException:\n{1}",
a.ToString(),
ex.ToString())
)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我可以对我的记录器说:
Monitor(MyClass.MyMethod)
Run Code Online (Sandbox Code Playgroud)
然后它将监视该方法内部的所有内容,包括传入参数以及方法调用和传递给这些方法的值,发生的异常等.
过去有没有人实现这样的东西?甚至可以实施吗?以这种方式登录只是一个梦想?
我喜欢设计能做到这一点的东西,但我甚至不知道我会从哪里开始.当然,我也不想重新发明轮子,如果它已经完成了,如果有人能指出我正确的方向,那就太好了.
任何建议都会感激不尽......
编辑:我想我会回答一个问题,询问日志中所需的详细程度.通常需要提供可配置级别的日志记录,以便如果配置指定详细日志记录,则记录所有内容,而如果配置了关键日志记录,则仅记录某些信息以及异常.如果配置了致命日志记录,则仅记录导致应用程序死亡的信息.这样的东西是可配置的还是AOP需要3或4个不同的构建,具体取决于日志记录级别的数量?
我经常使用4个级别:致命,严重,信息,详细
我创建了一个控制台应用程序,它从Excel工作表传输数据并将其传输到数据库.我需要登录它.
我该怎么办呢?因为我完全不知道如何去做.
我正在寻找有关处理 API 日志记录的最佳方法的帮助。我想将所有请求和响应记录到 sql 或文本文件(如果这是最好的方法)。目前我已经在 SQL Server 的日志表中插入一行。我使用名为 LogAction 的静态方法来执行此操作,并在 Web API 中每个控制器的末尾附近运行它。我还记录了捕获的异常。有没有办法用 MVC Web API 来做到这一点,或者我走在正确的轨道上?
目前它看起来就像这样:
// Log API Call
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(request.GetType());
StringWriter s = new StringWriter();
x.Serialize(s, request);
Utilities.LogAction(Utilities.LogType.MAIN, false, response.ToString(), s.ToString(), "MainController: Successful");
Run Code Online (Sandbox Code Playgroud)
有没有办法让它本地记录所有 API 操作?这对我来说是错误的,因为如果这个静态方法和实际返回响应之间发生了一些事情,那么这个日志就不再有效。记录 API 操作的最有效方法是什么?