小编Top*_*own的帖子

在解决方案中跨多个程序集使用相同的Log4net记录器的最佳模式是什么?

我有一个解决方案,包括一个主winforms应用程序,以及我希望记录的相关内部编写的类库dll.此记录应由同一记录器执行,无论主UI客户端或关联的dll是否调用此记录.dll当然可以被其他解决方案中具有不同记录器的其他应用程序使用,但在这些情况下将具有不同的log4net配置,并且可能是完全不同的一组appender.

一种方法是在主应用程序中创建单例并从中进行记录,但是由于log4net是它自己的单例,所以可以引用它,只要我们传递相同的字符串(或类型),log4net.LogManager.GetLogger我们将记录到相同的目的地(在我的情况下,我希望使用RollingFileAppender).

这有效.但是,鉴于DLL将具有许多类,这意味着我们希望记录的每个类实例化或静态类将需要i)定义记录器名称的参数(以便记录到同一目的地)和ii)在每个入口点都需要打电话log4net.LogManager.GetLogger(loggerName).

这里使用的最佳模式是什么?正确的方法是在每个程序集中创建单例实例吗?我担心的是,我们仍然需要将记录器名称传递给dll的每个入口点,这看起来有点过分.为了避免传入记录器名称,我可能会认为它始终等于System.Reflection.Assembly.GetCallingAssembly().GetName().Name.

如果这对于log4net来说太难了,还有其他更简单的解决方案,例如企业日志记录块吗?或者是面向方面编程(AOP)方法的最佳解决方案?

这里参考单例的反模式方法.

log4net projects-and-solutions

15
推荐指数
1
解决办法
1万
查看次数

恢复TortoiseSVN中的文件夹或文件,同时保留所有历史记录

在修订版1中存在一个文件夹.在修订版2中,文件夹被意外删除并且提交了更改.

我们希望回滚以使文件夹存在,并保留其历史记录.

TortoiseSVN文档中,它指示标题为"获取已删除的文件或文件夹"部分中的"如何".

报价:

获取已删除的文件或文件夹

如果您已删除文件或文件夹并已将该删除操作提交到存储库,则正常的TortoiseSVN - > Revert不能再将其恢复.但文件或文件夹根本没有丢失.如果您知道修订文件或文件夹已被删除(如果不知道,请使用日志对话框查找)打开存储库浏览器并切换到该修订版.然后选择您删除的文件或文件夹,右键单击并选择[上下文菜单] - > [复制到...]作为该复制操作的目标,选择工作副本的路径.

交换机会按照预期将文件检索到我的工作副本中,但是当我右键单击此工作副本时,上下文菜单中没有"复制到"选项.如果我打开repos浏览器,有一个副本到选项,但似乎这只是一个文件的副本.

我觉得解决方案是做一个分支/标记,但是如果我从先前的修订版中尝试这个到存储库中的相同路径,SVN会抛出路径已经存在的错误.

因此,如何恢复TortoiseSVN中的文件夹/文件,同时保留所有历史记录.

TortoiseSVN v1.6.8,Build 19260 - 32 Bit,Subversion 1.6.11,

svn tortoisesvn

1
推荐指数
1
解决办法
4979
查看次数