在Asp.NET样板中的方法中审核日志记录方法

时间:2018-07-23 07:35:38

标签: asp.net logging audit aspnetboilerplate boilerplate

我一直在从事ASP.NET BoilerPlate项目,我希望在该项目中使审核日志记录更加详细。

所以我得到了一个方法,该方法正在调用其他方法,但是在审核日志记录中,它仅显示被调用的第一级方法。

例如:

public class AuditLogAppService : TestAppServiceBase, IAuditLogAppService
{

...

public async Task<FileDto> GetTestInputToFile(GetTestInput input)
    {
        TestAuditInterception();

        ...

        return testExporter.ExportToFile(testDtos);
    }
}

它会审核日志GetTestInputToFile方法,但不会记录TestAuditInterception()。

当我阅读文档时,它说:

一种方法必须是公共的,以便保存审核日志。私有和受保护的方法将被忽略。 不过,我不确定这是否是我的情况。

是否可以在已记录的方法(TestAuditInterception())中记录该方法?

1 个答案:

答案 0 :(得分:1)

我想此服务作为API控制器公开。 我还假定这是一个ASP.NET Core应用程序(不是MVC 5.x)。

在这种情况下,没有内置的方式可以做到这一点。仅记录进入方法。这是设计使然。

在大多数情况下,这是审计日志记录的良好行为,因为客户端(或用户)调用公共方法,然后该方法可能调用另一个私有方法。无需记录整个调用堆栈。应该只记录入口点。

此外,我们不建议您从另一个方法中调用公共应用程序服务方法,这是一种好习惯。如果要重用代码,请将公共部分移至私有方法。

如果您仍然希望这样做,可以在Github(https://github.com/aspnetboilerplate/aspnetboilerplate/issues/new)上创建问题,因此我们将在下一版本中考虑。