【问题标题】:log4net:ERROR Could not create Appender [Console] of type [log4net.Appender.ColoredConsoleAppender]. Reported errorlog4net:错误无法创建类型为 [log4net.Appender.ColoredConsoleAppender] 的 Appender [Console]。报告错误
【发布时间】:2020-09-28 21:22:18
【问题描述】:

您好朋友,我在控制台应用程序的 net core 中尝试使用 log4net 时遇到以下问题。

我的代码是这样的:

using log4net;
using log4net.Config;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;
using Teltonika.Codec;

namespace UdpListener
{
    class Program
    {
        private static readonly ILog Log = LogManager.GetLogger(typeof(Program));
        static void Main()
        {
            XmlConfigurator.Configure();
            IPAddress ip;
            if (!IPAddress.TryParse(ConfigurationManager.AppSettings["ipAddress"], out ip))
            {
                Log.Error("Ip is not valid.");
                throw new ArgumentException("Ip is not valid.");
            }

            int port;
            if (!int.TryParse(ConfigurationManager.AppSettings["port"], out port))
            {
                Log.Error("Port is not valid.");
                throw new ArgumentException("Port is not valid.");
            }

            Task.Run(async () =>
            {
                try
                {
                    using (var udpClient = new UdpClient(new IPEndPoint(ip, port)))
                    {
                        Log.Info("Listening...");

                        while (true)
                        {
                            //IPEndPoint object will allow us to read datagrams sent from any source.
                                var receivedResults = await udpClient.ReceiveAsync();

                            byte[] data = receivedResults.Buffer;


                            //tramaService.InsertTrama(new Entity.GpsPuntos()
                            //{
                            //    Fecha = DateTime.Now,
                            //    Trama = String.Join("", data.Select(x => x.ToString("X2")).ToArray())
                            //});


                            Log.Info(string.Format("Received connection from: {0}", receivedResults.RemoteEndPoint));
                            Log.Info(string.Format("{0} - received [{1}]", DateTime.Now, String.Join("", data.Select(x => x.ToString("X2")).ToArray())));

                            var reader = new ReverseBinaryReader(new MemoryStream(data));

                            // Decode data
                            var avlData = new DataDecoder(reader).DecodeUdpData();

                            // Create response
                            var bytes = new List<byte>();

                            const short packetLength = 2 /* Id */+ 1 /* Type */ + 1 /* Avl packet id */+ 1 /* num of accepted elems */;
                            bytes.AddRange(BitConverter.GetBytes(BytesSwapper.Swap(packetLength)));
                            bytes.AddRange(BitConverter.GetBytes(BytesSwapper.Swap(avlData.PacketId)));
                            bytes.Add(avlData.PacketType);
                            bytes.Add(avlData.AvlPacketId);
                            bytes.Add((byte)avlData.AvlData.DataCount);

                            var response = bytes.ToArray();

                            Log.Info(string.Format("{0} - response [{1}]", DateTime.Now, String.Join("", bytes.Select(x => x.ToString("X2")).ToArray())));

                            await udpClient.SendAsync(response, response.Length, receivedResults.RemoteEndPoint);
                        }
                    }
                }
                catch (Exception ex)
                {

                    throw new Exception(ex.Message);
                }

            });

            Console.ReadLine();
        }
    }
}

这是我的错

log4net:ERROR 无法创建类型为 [log4net.Appender.ColoredConsoleAppender] 的 Appender [Console]。报告的错误如下。 System.NotSupportedException:没有可用于编码 850 的数据。有关定义自定义编码的信息,请参阅 Encoding.RegisterProvider 方法的文档。 在 System.Text.Encoding.GetEncoding(Int32 代码页) 在 log4net.Appender.ColoredConsoleAppender.ActivateOptions() 在 log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement) log4net:ERROR Appender 未找到名为 [Console]。

我的存档配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>

    <appSettings>
        <add key="ipAddress" value="172.17.160.1"/>
        <add key="port" value="3316"/>
        <!--<add key="log4net.Internal.Debug" value="true"/>-->
    </appSettings>

    <log4net>
        <appender name="Console" type="log4net.Appender.ColoredConsoleAppender" Target="Console.Error">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%logger - %message%newline"/>
            </layout>
        </appender>
        
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            <file value="log.txt"/>
            <appendToFile value="true"/>
            <rollingStyle value="Size"/>
            <maxSizeRollBackups value="10"/>
            <maximumFileSize value="500KB"/>
            <staticLogFileName value="true"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%d %-5p %c %m%n"/>
            </layout>
        </appender>

        <root>
            <level value="INFO"/>
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileAppender"/>
        </root>
    </log4net>
</configuration>

我希望它在控制台应用程序中显示它正在工作。

【问题讨论】:

    标签: .net-core log4net


    【解决方案1】:

    在从 .NET Framework 升级到 .NET 5 后,我自己今天也遇到了同样的错误。我设法通过在我的程序开始时添加以下行来解决它:

    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

    【讨论】:

    • 在 .NET Core 3.1 上为我工作,顺便说一句。 - 谢谢。 ?
    【解决方案2】:

    对我来说,这是通过使用 ManagedColoredConsoleAppender 来解决的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 2018-05-14
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2012-12-02
      • 2022-12-20
      • 1970-01-01
      相关资源
      最近更新 更多