﻿using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using log4net.Core;
using log4net.Util;

// Serialize a LoggingEvent in 2.x format using a JSON formatter.
// This written file is read back and verified in src\log4net.Tests\Core\LoggingEventTest.cs.

// Note to avoid the need to run this program during testing,
// the output of a manual run is cached in this directory.
// If for some reason a new serialized file is needed, run this program and
// commit the result over the cached version.

var localTimestamp = new DateTime(2000, 7, 1, 0, 0, 0, 0, CultureInfo.InvariantCulture.Calendar, DateTimeKind.Local);

var stackTrace = new StackTrace(true);

var log4Net2Event = new LoggingEvent(new LoggingEventData
{
  // Deliberate use of obsolete local timestamp.
#pragma warning disable CS0618 // Type or member is obsolete
  // TimeStamp = localTimestamp,
#pragma warning restore CS0618 // Type or member is obsolete

  LoggerName = "aLogger",
  Level = Level.Log4Net_Debug,
  Message = "aMessage",
  ThreadName = "aThread",
  LocationInfo = new LocationInfo(typeof(Program)),
  UserName = "aUser",
  Identity = "anIdentity",
  ExceptionString = "anException",
  Domain = "aDomain",
  Properties = new PropertiesDictionary { ["foo"] = "bar" },
});

log4Net2Event.Fix = FixFlags.All;

using var stream = File.OpenWrite("SerializeV2Event.dat");
var formatter = new BinaryFormatter();
formatter.Serialize(stream, log4Net2Event);
