.net标准1.3项目中的log4net配置
我正在尝试将C#项目从.NET Framework v4.6迁移到.NET标准. 该项目具有log4net v2.0.8依赖关系. 我找到了这个 so anwser ,建议使用.NET标准1.3并提及此帖子获取更详细的解决方案. 使用XmlConfigurator.Configure方法配置log4net时,就会发生问题,该方法需要ILoggerRepository作为第一个参数. 在post LogManager.GetRepository(Assembly.GetEntryAssembly())中使用的方法中,但是Assembly.GetEntryAssembly()是不支持 .NET标准1.3. 那么,如何在.NET标准1.3项目中配置log4net? 解决方案 在您的.NET标准1.3类库项目中,在方法签名的签名中提供一个Assembly参数,例如: public static void Configure(Assembly assembly
4 2024-01-08
编程技术问答社区
.Net标准版上的Log4Net没有版本可以在没有存储库的情况下获得记录器。
我正在尝试将项目转移到.NET标准,这基本上是一个类库. 我正在使用log4net进行记录,并且正在使用该方法 public static ILog GetLogger(string name); 由于这是一个由多个项目引用的库,因此不应在每个项目引用此项目时定义存储库,它定义了其自己的记录存储库. 在移植到.NET标准时,我该如何规避此问题? 解决方案 GetLogger的实现很简单: public static ILog GetLogger(string name) { return GetLogger(Assembly.GetCallingAssembly(), name); } 假设您想使用班级库的程序集,则可以为此轻松编写自己的助手方法: private static ILog GetLogger(string name) => LogManager.GetLogger(typeof(SomeTypeInYourLibrary)
0 2024-01-08
编程技术问答社区
带有.net core 2和框架Wrapper的Log4Net
我正在制作.NET Core 2 Web应用程序.我被要求使用log4net来处理我们的记录,但是我想将其放在.NET Framework 4.6.1包装器项目中,以便更改内部记录系统,而无需在整个过程中更新所有方法调用网站. 到目前为止,我发现的一切都是为了做一个或另一个.将log4net包装在4.6.1中或直接引用.NET核心. 到目前为止,我的两个主要例外是" filenotfoundexception",因为我将其用作直接参考,或者当我在框架中执行packageReference proejct文件时,我得到的"记录与netcoreapp2.0不兼容.框架4.6.1. 解决方案 首先,我建议您使用.NET标准1.3的包装器,因为这是log4net支持的当前.NET核心版本,此外,这将允许您在.NET Core和.NET框架中引用此包装器4.6及以上. 第二,请参见:
6 2024-01-08
编程技术问答社区
.Net核心工作程序服务在作为Windows服务运行时无法找到log4net.config
我的解决方案中有这些项目: .NET Core 3.1 Worker Service .net core 3.1类库 - 用于配置log4net 但是我的log4net.config文件在我的工作人员服务项目中.当我调试时,它正在登录到log4net.config中配置的文件. 但是,当我安装Worker服务作为Windows服务时,它不会登录到文件. ,当我检查log4net.config位置时,它具有以下值: 调试时:D:\myrepos\webapicore\Development\Message.Consumer\log4net.config 作为服务运行时:C:\WINDOWS\system32\log4net.config 所以我相信,由于log4net.config在C:\WINDOWS\system32\中不可用,因此无法进行记录. 更新: 我正在使用以下代码检索log4net.config var logReposit
6 2024-01-08
编程技术问答社区
使用.NET核心应用程序的Log4Net配置
我需要在新的.NET核心应用程序上使用log4net,该应用程序引用了一些使用log4net的书面汇编. 我已经四处搜索,但是所有示例仅通过一个FileInfo> log4net.Config.XmlConfigurator.Configure,但是使用最新版本要求类型ILoggerRepository repository 的第一个对众聚者 我应该通过什么? 我的代码是 public static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); var configuration = builder.Build();
2 2024-01-08
编程技术问答社区
如何在.NET核心WebAPI中自动记录每个请求?
我想自动记录所有请求.在以前的.NET FRAMWORK WEEBAPI项目中,我曾经注册一个委托人. webapiconfig.cs public static void Register(HttpConfiguration config) { config.MessageHandlers.Add(new AutoLogDelegateHandler()); } autologdelegatehandler.cs public class AutoLogDelegateHandler : DelegatingHandler { protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var requestBody = requ
8 2024-01-08
编程技术问答社区
无法加载文件或程序集'log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'或其依赖项之一
我发现了几个有关此问题的线程,但是这些线程都没有解决我的问题. 我以前曾在我的ASP.NET服务中使用log4net version 1.2.10.0.由于某些第三方库,我将其更新为log4net v2.0.8.0的当前版本,我还将web.config中的以下行添加到支持/重定向旧版本中.
4 2024-01-08
编程技术问答社区
用log4net在.net5中以单文件形式部署,对配置文件产生了异常。
尝试部署用log4net作为单文件编写的.NET 5编写的控制台 - 应用程序. 运行部署的应用程序抛出异常. 复制的步骤 dotnet新控制台 - 名称testconsole-语言C#(确保.net 5.0) 安装包log4net program.cs static void Main(string[] args) { log4net.Config.XmlConfigurator.Configure(new FileInfo("log.config")); var logger = log4net.LogManager.GetLogger("TestLogger"); logger.Info("Hello World!"); } log.config(始终复制)
4 2024-01-08
编程技术问答社区
log4net和.net框架4.0
将解决方案更新为.NET 4.0时,我在Log4NNET中遇到问题,然后下载了它的源头并构建了Log4net并将其定位为.NET 4.0并在我的项目中使用. 最初,当我引用针对运行时间2.0的log4net时,它符合并运行应用程序,但日志不起作用. 现在,当我以目标为.NET 4.0的log4net运行项目时,我会得到错误"The type initializer for 'Log4NetTest.TestLog' threw an exception." 任何想法如何解决? 编辑:这是内部异常: InnerException: System.TypeLoadException Message=Inheritance security rules violated while overriding member: 'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime
2 2024-01-07
编程技术问答社区
Log4Net和.NET 4.0 RC
我尝试使用.NET 4.0 RC来编译依赖于Log4NNET日志记录框架的项目,并遇到一些问题. 开箱即用(只是将目标更改为.NET 4.0),它不再起作用,抛出了安全例外. 继承安全规则 覆盖成员时: 'log4net.util.ReadonlyPropertiesDictionary.getObjectData(System.Runtime.Serialization.Serialization.info, System.Runtime.Serialization.StreamingContext)'. 安全可访问性 覆盖方法必须与 该方法的安全可访问性 通过将以下行添加到log4net组件(insedblyInfo.cs)来解决: [assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)] 有人可以解释为什么需要这种情况,并且有其他选择以这种方式吗?这
4 2024-01-07
编程技术问答社区
使用.NET 4.0的log4net
我已经将一些代码与新的.NET 4.0/vs 2010件修补在一起,但是我似乎找不到4.0的记录框架(log4net)的构建,我得到了2.0版本的参考错误.某处有4.0版本吗?我不是在要求新功能,只是已经重建了针对新组件的版本.有人知道我可以在哪里找到为4.0框架构建的1.2.10的构建? 解决方案 log4nnet有一个已知的引用系统的问题.Web组件,该组件不是.网络框架4客户端配置文件和默认情况下的VS2010设置项目目标为 LightWeighted 客户端配置文件. 解决方案是将目标更改为.NET框架4: 右键单击项目 - >属性 - >应用程序. 更改: .NET Framework 4 Client Profile 是: .NET Framework 4 ...那应该可以使用,即您可以再次使用log4net ...
8 2024-01-07
编程技术问答社区
用log4net登录到数据库
我使用log4net在项目中记录错误.我想将消息记录到db(SQL Server)中,所以我添加了AdoNetAppender,但它不起作用(其他附录工作正常,连接字符串正确). 怎么了? 解决方案 我决定创建一个裸露的示例项目.这有效.也许您应该尝试使它起作用. 创建一个空控制台应用程序项目.添加对log4net的引用. C#代码: using log4net; [assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace Litter { class Program { static void Main() { LogManager.GetLogger("default").Info("Hello, World!"); } } } 配置文件:
2 2024-01-07
编程技术问答社区
以编程方式向LoggingEventData添加一个自定义属性
我正在为log4net创建一个自定义包装器.我正在尝试填充我的loggingeventdata对象,并且我想将一些自定义属性传递给Appender的append方法. 但是,这些属性是中间属性,所以我不希望它们在附录配置中. loggingeventdata.properties只是读字典. 有没有办法在其中获得一个值,让我可以将自定义属性(通过loggingeventdata)传递给Appender,而无需更新Appender或配置文件? 解决方案 尚不清楚您要做什么,我怀疑无论是什么,loggingeventdata路径可能不是最好的,除非您可以使用可能使用的是,您可以轻松地将数据存储在Log4net上下文中并在登录时检索. 您将其设置在记录代码中: // Other contexts are available // http://logging.apache.org/log4net/release/manual/contexts.html l
8 2024-01-07
编程技术问答社区
现在Log4Net.config没有被加载,因为我把我的包装类移到了它自己的类项目中。
任何人都可以提供帮助吗,我一直在使用Log4net成功,我基本上在WebProject中使用了一个静态类(包装器),并且我通过在assemenblyInfo.cs 中添加此from从外部文件加载config config. // log4net config file [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)] 一切都很好! log4net.config仍在WebProject中,但当然现在没有加载,我可以说这是因为在我的静态类(现在是其自己的项目)中,我正在做 return LogManager.GetLogger("InfoLogger").IsInfoEnabled; 和isInfoEnabled返回false,没有记录任何内容,.config文件没有被读取... 记住log4net包装器(
2 2024-01-07
编程技术问答社区
在运行时附加或分离appender
我正在为log4net使用XML配置.我有以下appender-refs: (我也有这些在XML中定义的这些附录 - 他们的确切实现无关紧要.) 我想在运行时删除OldRollingLogAppender,然后创建并添加一个名为NewRollingLogAppender的新的.我该怎么做呢? 一个最小的工作示例很好. 解决方案 您可以通过获取根记录器,然后添加并删除附录: 删除: var root = ((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root; root.RemoveAppender(xxx)
4 2024-01-07
编程技术问答社区