答案 0 :(得分:3)
你尝试的是回归测试。在其6,000,000个测试中,它包括ORM的HTTP / 1.1 Client-Server部分。如果没有管理员权限, http.sys 服务器将无法注册URI,因此您会收到错误。这非常有意义。这是Vista / Seven限制,而不是mORMot限制。
日志记录部分可以与ORM部分完全分开使用。日志记录在SynCommons.pas
(和SynLZ.pas
中实现,用于存档和.map嵌入的快速压缩算法)。我使用TSynLog
类没有任何问题来记录现有的应用程序(甚至是Delphi 5和Delphi 6应用程序),这些应用程序已存在多年。 SQLite3 / ORM类在其他单元中实现。
它支持事件嵌套,具有自动离开功能,正如您所期望的那样。那就是你可以写:
procedure TMyClass.MyMethod(const Params: integer);
begin
TSynLog.Enter;
// .... my method code
end;
添加此TSynLog.Enter
将使用与递归级别对应的缩进进行记录。恕我直言,这可能符合您的要求。它将在堆栈上声明一个ISynLog
接口,Delphi将在“end;
”代码行中释放它,因此它将实现自动保留功能。如果您在编译时生成.map文件(可以压缩并附加到.exe文件中,那么确切的单元名称,方法名称和源代码行号将写入日志(如MyUnit.TMyClass.MyMethod (123)
))您的客户日志将包含源行号。您有ISynLog
接口级别的方法来添加一些自定义日志记录,包括参数和自定义状态(如果需要,您可以将对象属性记录为JSON,或者编写自定义日志记录数据)。
跟踪每种方法的确切时间,因此您可以根据客户提供的数据分析您的应用程序。
如果您认为日志过于冗长,则可以在客户端自定义多个级别的日志记录。请参阅blog articles和framework documentation的相应部分(在 SynCommons 部分中)。例如,你有“失败”事件和一些自定义事件。它完全独立于VCL,因此您可以在没有GUI的情况下或在任何GUI启动之前使用它。
您手边有一个日志查看器,允许客户端分析和嵌套的Enter / Leave视图(如果单击“Leave”行,您将返回相应的“Enter”,例如):< / p>
如果此日志查看器不够用,您可以使用其源代码来满足您的要求,并根据需要自行解析和处理.log文件所需的所有类。默认情况下,日志是文本的,但可以根据请求压缩为二进制,以节省磁盘空间(日志查看器能够读取那些压缩的二进制文件)。堆栈跟踪和异常拦截都已实现,可以根据请求激活。
如果您愿意,可以轻松地在日志中添加“1.2.1”之类的数字。您已获得日志记录单元的完整源代码。随意提出任何问题in our forum。
答案 1 :(得分:0)
Log4D支持 TLogNDC 类中的嵌套诊断上下文,它们可用于将与一个复合操作相关的所有步骤(而不是“会话”)组合在一起基于日志事件的分组)。多接收器在log4d和log4delphi中称为Appender,因此您可以编写一个包含大约二十五行代码的TLogMemoAppender,并在运行时配置ODSAppender,RollingFileAppender或SocketAppender,同时使用它(无外部配置文件)必需的)。