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