[2024-11-25 09: 56: 28: 569] [ T: G-D] [PID: 6288] [TH: THEAD ID = 76] [lib: **********. P> Связанный код: < /p>
Код: Выделить всё
_logger.LogDebug("Record {0} management completed", _info.recordName);
corpluction также происходит на фиксированных строках, as: < /p>
Код: Выделить всё
_logger.LogDebug("Program completed");
< /code>
Когда возникает проблема, почти все следующие зарегистрированные строки повреждены (также из разных потоков). Через некоторое время (даже часы) исключение брошено: < /p>
An error occurred while writing to logger(s). (Input string was not in a correct format.)
Input string was not in a correct format.
[2024-11-25 09:56:28:582][T:CE-M][Pid:6288][Th:Thread ID = 76][Lib:**********.P4MTechnologicalPlugin.P4MTechnologicalPlugin][Ver:1.1.2]{0} An error occurred while writing to logger(s). (Input string was not in a correct format.)
at Microsoft.Extensions.Logging.Logger.ThrowLoggingError(List`1 exceptions)
at Microsoft.Extensions.Logging.Logger.Log[TState](LogLevel logLevel, EventId eventId, TState state, Exception exception, Func`3 formatter)
at Microsoft.Extensions.Logging.LoggerExtensions.Log(ILogger logger, LogLevel logLevel, EventId eventId, Exception exception, String message, Object[] args)
at **********.L1DataLoaderBeckhoffPlugin.PLCConsumerQueueManager.CreateConsumerThread(Object obj)
at System.Threading.Thread.StartCallback()
Input string was not in a correct format.
at System.Text.ValueStringBuilder.ThrowFormatError()
at System.Text.ValueStringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
at System.String.Format(IFormatProvider provider, String format, Object[] args)
at Microsoft.Extensions.Logging.LogValuesFormatter.Format(Object[] values)
at NLog.Extensions.Logging.NLogLogger.CreateLogEventInfo[TState](LogLevel nLogLogLevel, EventId eventId, TState state, Exception exception, Func`3 formatter)
at NLog.Extensions.Logging.NLogLogger.Log[TState](LogLevel logLevel, EventId eventId, TState state, Exception exception, Func`3 formatter)
at Microsoft.Extensions.Logging.Logger.g__LoggerLog|14_0[TState](LogLevel logLevel, EventId eventId, ILogger logger, Exception exception, Func`3 formatter, List`1& exceptions, TState& state)
< /code>
Наверняка формат шаблона правильный в коде, и тот же журнал использовался много раз перед исключением. В приложении нет явного небезопасного кода (по крайней мере, в моих модулях). Единственное сомнение в некоторых касках с использованием следующего кода: < /p>
public static T CastTo(this byte[] bytes) where T : struct
{
ArgumentNullException.ThrowIfNull(bytes);
if (bytes.Length != Marshal.SizeOf())
throw new ArgumentException($"{nameof(bytes)}.{nameof(bytes.Length)} != {nameof(Marshal)}.{nameof(Marshal.SizeOf)}()");
GCHandle handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
try
{
return Marshal.PtrToStructure(handle.AddrOfPinnedObject());
}
finally
{
handle.Free();
}
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct SetProgramRecoverabilityStatusRequest
{
public long programId;
public uint counter;
public uint status;
}
// Usage
byte[] data;
SetProgramRecoverabilityStatusRequest requestData;
//... data is set here
requestData = CastTo(data);
Есть ли у вас есть идеи Где проблема могла бы родиться и как это отладить/исправить?
Большое спасибо.
Подробнее здесь: https://stackoverflow.com/questions/794 ... ed-strings
Мобильная версия