Tag: logging

如何在MongoDB C#Driver 2.0中记录我的查询?

刚刚将我的应用程序升级到最新的稳定MongoDB C#Driver 2.0。 在迁移过程中,基本function已被破坏,即使是最简单的查询,例如: this.collection.Find(e => e.Id == id).SingleOrDefaultAsync()也不会返回正确的数据。 检查了类映射和约定,但我希望看到输出查询以正确识别问题。 那么,应该如何在MongoClient端完成? 在数据库级别设置分析是可能的,但不是一个好的解决方案,因为我们有几个应用程序和开发人员使用数据库。 我的应用程序目前在UI,业务和EF数据访问中使用Ninject.Extensions.Logging和log4net 。

在Log4Net消息到达appender之前编辑它们

我有一个安全工具,通过电子邮件向用户发送新密码。 当阈值为VERBOSE时,生产电子邮件模块(我不拥有并且不想更改)将使用Log4Net记录整个html电子邮件消息正文。 由于电子邮件包含明文的域用户密码,因此我希望在日志消息到达appender之前从中删除密码。 有没有办法让我临时插入一个对象到Log4Net堆栈,这将允许我搜索LoggingEvent消息并更改它以掩盖我找到的任何密码? 我想插入对象,调用电子邮件模块,然后删除该对象。

使用Serilog的一个记录器的多个filter

我正在尝试使用我的ASP.NET核心应用程序设置Serilog。 我想为所有控制器提供一个日志文件,一个用于所有服务,一个用于其余服务,理想情况下包含一切。 每个控制器都inheritanceBaseController和每个服务BaseService 。 我正在调用的控制器和服务正在编写跟踪日志事件。 通过dependency injection检索记录器和服务。 该服务看起来像控制器(关于记录器)。 public class UsersController: BaseController { private UserService service { get; } public UsersController(ILogger logger, UserService userService) : base(logger) { service = userService; } } public abstract class BaseController: Controller { protected readonly ILogger Logger; public BaseController(ILogger logger) { Logger = logger; } } 方法1 (仅与基础部门合作) Log.Logger = […]

为什么我的Windows服务不会写入我的日志文件?

我有一个Windows服务并使用nlog进行日志记录。 当我从visual studio ide运行时,一切正常。 日志文件更新没有问题。 当我安装该服务时,该服务运行正常,但日志文件永远不会更新。 如果有帮助,我在LOCAL SERVICE下运行。 是的,我在我的应用程序文件夹下创建了logs目录。

Azure函数使用TraceWriter在外部库中进行日志记录

如何重用azure函数中可用的TraceWriter对象来记录外部引用的库中的信息? 我尝试使用构造函数传入对象并引用TraceWriter类(web.http.tracing)。 我没有运气,因为课程看起来不同。

entity framework核心:记录单个数据库上下文实例的查询

使用EF Core(或任何ORM)我想跟踪ORM在我的软件中进行某些操作期间对数据库的查询次数。 我之前在Python下使用过SQLAlchemy,在这个堆栈上,这很容易设置。 我通常有一个unit testing,它针对一个场景的查询数量,针对内存中的SQLite数据库进行断言。 现在我想使用EF Core做同样的事情,并查看了Logging文档 。 在我的测试设置代码中,我按照文档说的那样做: using (var db = new BloggingContext()) { var serviceProvider = db.GetInfrastructure(); var loggerFactory = serviceProvider.GetService(); loggerFactory.AddProvider(new MyLoggerProvider()); } 但我遇到的问题我怀疑是以下结果(也来自文档): 您只需要使用单个上下文实例注册记录器。 注册后,它将用于同一AppDomain中上下文的所有其他实例。 我在测试中看到的问题表明我的记录器实现是在多个上下文中共享的(这与我阅读它们时的文档一致)。 并且因为a)我的测试运行器在并行运行测试而b)我的整个测试套件创建了数百个db上下文 – 它不能很好地工作。 问题/问题: 我想要的是什么? 即我可以使用仅用于该db上下文实例的db上下文注册记录器吗? 还有其他方法可以完成我想要做的事情吗?

每个类实例的唯一日志文件

我目前正在运行一个Windows服务,它创建了一个类的多个实例。 在服务类的顶部和我的解决方案中的每个其他类,我有这样的事情: private static readonly ILog _log = LogManager.GetLogger(typeof(SomeClassTypeHere)); 在我的App.config中,我为单个文件配置了Log4Net: 这在大多数方面都很有效,并且所有内容都记录到单个文件中。 但是,我真的想为我的服务创建的特定类的每个实例创建一个单独的日志文件。 这是一个我们经常需要监视以获得支持的类,我们可以同时运行少量实例。 我们不知道哪些实例将在给定时间运行,因此它使得在配置中创建静态文件有点痛苦。 我尝试取消readonly修饰符并在类构造函数中设置以下内容: _log = LogManager.GetLogger(“DataCollectionClass_” + deviceName + “_” + DateTime.Now.ToString(“MMddyyyy”), typeof(SomeClassTypeHere)); 但这需要我在配置中手动定义一个appender,这很麻烦,很难跟上。 有关在L4N中这样做的任何想法吗? 我在这里看过链接,但不知道是否需要那么多的框架。

Serilog – 多个日志文件

我正在使用Serilog进行日志记录,并且无法弄清楚如何将日志事件分离到不同的文件。 例如,我想将错误记录到error_log-ddmmyyyy.txt,并将警告记录到warn_log-ddmmyyyy.txt。 这是我的记录器配置: Log.Logger = new LoggerConfiguration() .WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(Matching.WithProperty(“Level”, “Warning”)) .WriteTo.RollingFile( Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @”Logs\warn_log-{Date}.txt”), outputTemplate: OutputTemplate)) .WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(Matching.WithProperty(“Level”, “Error”)) .WriteTo.RollingFile( Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @”Logs\error_log-{Date}.txt”), outputTemplate: OutputTemplate)) .CreateLogger(); 它仅在我在日志消息中指定{Level}属性时才有效。 我试图使用: Matching.WithProperty(“Level”, l => l == LogEventLevel.Warning) 但它也没有用。

如何在使用EF代码的.SaveChanges()期间记录所有实体更改?

我先使用EF代码 。 此外,我正在为我的所有存储库和注入存储库的IUnitofWork使用基本存储库: public interface IUnitOfWork : IDisposable { IDbSet Set() where TEntity : class; int SaveChanges(); } public class BaseRepository where T : class { protected readonly DbContext _dbContext; protected readonly IDbSet _dbSet; public BaseRepository(IUnitOfWork uow) { _dbContext = (DbContext)uow; _dbSet = uow.Set(); } //other methods } 例如,我的OrderRepository是这样的: class OrderRepository: BaseRepository { IUnitOfWork _uow; […]

即使调用了TraceEvent,也没有创建跟踪文件?

目的 使用System.Diagnostics执行跟踪。 虽然我使用了log4net和其他日志记录解决方案,但我只对跟踪使用System.Diagnostics感兴趣。 问题 即使我发出了TraceEvent ,也没有在任何地方创建文件。 应用信息 我有一个托管一些WF服务的应用程序。 其中一个服务是状态机,其初始状态如下所示: LogMessage自定义活动也很直接。 它收到四个基本参数: 将TraceSource定义为变量: 然后只需调用TraceEvent : 组态 此TraceSource和TraceListener的配置如下: