Introduced Newtonsoft.Json-backed persistence. Improved backing-store reliability and serialization across the caching stack. Improved networking security posture. Key changes: - Add new GameCult.Caching.NewtonsoftJson project with SingleFile/MultiFile backing stores and polymorphic known-type envelopes. - Add MessagePack helper serialization (DatabaseEntrySerialization) and update MessagePack backing stores to use the shared options/resolver; add DatabaseLink formatter and generator/analyzer docs. - Update CultLib.sln to include the new projects and new caching tests project. - Improve CultCache persistence behavior: track pending store operations, wait for operations on PullAll, and centralize async push handling with error logging. - Harden file I/O in multi-file/single-file stores: atomic temp-file writes, safe Replace/Move semantics, rename-safe deletes, and improved file-watcher subscription and debounce disposal. - Add README files and documentation for several subprojects and packaging projects. These changes add JSON persistence support, improve serialization consistency, and make on-disk operations more robust and observable.
50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
namespace GameCult.Logging
|
|
{
|
|
/// <summary>
|
|
/// Defines the logging contract used across CultLib components.
|
|
/// </summary>
|
|
public interface ILogger
|
|
{
|
|
/// <summary>
|
|
/// Writes an informational message.
|
|
/// </summary>
|
|
/// <param name="message">The message to record.</param>
|
|
void LogInfo(string message);
|
|
|
|
/// <summary>
|
|
/// Writes a warning message.
|
|
/// </summary>
|
|
/// <param name="message">The message to record.</param>
|
|
void LogWarning(string message);
|
|
|
|
/// <summary>
|
|
/// Writes an error message.
|
|
/// </summary>
|
|
/// <param name="message">The message to record.</param>
|
|
void LogError(string message);
|
|
|
|
/// <summary>
|
|
/// Writes a debug message.
|
|
/// </summary>
|
|
/// <param name="message">The message to record.</param>
|
|
void LogDebug(string message); // Optional; skip in prod
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides a no-op logger implementation.
|
|
/// </summary>
|
|
public class NullLogger : ILogger
|
|
{
|
|
/// <inheritdoc />
|
|
public void LogInfo(string message) { }
|
|
|
|
/// <inheritdoc />
|
|
public void LogWarning(string message) { }
|
|
|
|
/// <inheritdoc />
|
|
public void LogError(string message) { }
|
|
|
|
/// <inheritdoc />
|
|
public void LogDebug(string message) { }
|
|
}
|
|
}
|