Logging is a cross-cutting issue. aspect-oriented programming aims to encapsulate cross-cutting issues into aspects. This allows for clean isolation and code reuse, addressing the cross-cutting issue.
You need to create a library and implement your logging classes, for example, "MyProject.CrossCutting.Logging". And use aspect-oriented approaches to recording events using this library.

source
share