我一直在从事ASP.NET BoilerPlate项目,希望在该项目中使审计日志记录更加详细。
所以我得到了一个方法,它调用不同的其他方法,但在审计日志中,它只显示被调用的第一级方法。
例如:
public class AuditLogAppService : TestAppServiceBase, IAuditLogAppService
{
...
public async Task<FileDto> GetTestInputToFile(GetTestInput input)
{
TestAuditInterception();
...
return testExporter.ExportToFile(testDtos);
}
}
它确实审核日志GetTestInputToFile方法,但不记录TestAuditInterception((。
正如我阅读的文件,它说:
方法必须是公共的,才能保存审核日志。将忽略私有方法和受保护方法。不过,我不确定这是否是我的情况。
有没有办法在记录的方法(TestAuditInterception(((中记录该方法?
我假设此服务公开为API控制器。我还假设这是一个ASP.NET核心应用程序(而不是MVC 5.x(
在这种情况下,没有内置的方法。只会记录入口方法。这是经过设计的。
在大多数情况下,这对于审计日志记录来说是一种很好的行为,因为客户端(或用户(调用了一个公共方法,然后该方法可能会调用另一个私有方法。无需记录整个调用堆栈。只应记录入口点。
此外,我们不建议从另一个方法调用公共应用程序服务方法,这是一种很好的做法。如果要重用代码,请将公共部分移到专用方法中。
如果你仍然想要,你可以在Github上创建一个问题(https://github.com/aspnetboilerplate/aspnetboilerplate/issues/new),所以我们会在下一个版本中考虑它。