You are viewing a potentially older version of this package. View all versions.
mattymatty-AsyncLoggers-2.1.2 icon

AsyncLoggers

YEET the logs to their own thread!

Date uploaded 2 months ago
Version 2.1.2
Download link mattymatty-AsyncLoggers-2.1.2.zip
Downloads 165737
Dependency string mattymatty-AsyncLoggers-2.1.2

README

Async Loggers

GitHub Release GitHub Pre-Release
Thunderstore Downloads

YEET the logs to their own thread!

For the users:

Async Logs:

remove any log related lag by processing them separately from the game stuff. the more logs your modpack generates the bigger the impact this mod has!

Log Level filter:

Reduce logs from mods by specifying a LogLevel for each LogSource

Unity Log wrapping:

Detect calls to Unity.Debug inside the game assemblies and allow users to tweak them
Note: Has to be enabled in the config LogWrapping.Enabled

For the Developers:

the class AsyncLoggers.API.AsyncLoggersAPI contains a method to register your own ILogListener into AsyncLoggers system:

public static void UpdateListenerFlags(ILogListener target, LogListenerFlags flags)

possible flags are:

  • SyncHandling
    This listener will receive logs directly, without any buffering or delay.
  • IgnoreFilters
    This listener will receive all logs, bypassing any filters that might be applied.
  • AddTimeStamp
    This listener will have a timestamp prepended to the log messages.
  • None

additionally the class exposes two properties:

  • APIVersion
    The current version of the API, represented as a Version.
  • TraceableLevelsMask
    a flag enum representing what LogLevel will make AsyncLoggers block to collect stacktrace.

CHANGELOG

v2.1.2

  • fix crash while quitting the game

v2.1.1

  • add UnityFrame as timestamp option

v2.1.0

  • New API for registering ILogListeners ( API version 1.0.0 )
  • improved detection of Debug.Log calls ( Config version v1.1 )
    • Rewrote the decompiler from scratch 😭

v2.0.3

  • ensure assemblies in the LogWrapping pass are loaded in dependency order

v2.0.2

  • small optimizations to wrapping system

v2.0.1

  • fix wrong defaults

v2.0.0

  • remove DBAPI
  • add some api to handle custom ILogListeners
  • remove patches to unity loggers
  • embed AsyncLoggers.Filter
  • immediately defer logs with a global Dispatcher Thread
  • add LogWrapping system to edit basegame Log calls

v1.6.3

  • generate LogEvent timestamp only once

v1.6.2

  • fix Database rolling failing after 1 cycle
  • fix NRE during app closing if Database is disabled
  • add more try/catches to prevent unwanted exceptions from propagating

v1.6.1

  • fix errors during shutdown

v1.6.0

  • added Mods table to SqliteDb
  • added Events table to SqliteDb
  • added ModData table to SqliteDb
  • new API for mods to write custom events and or data to sqliteDb ( intended use only for debug not as storage )

v1.5.1

  • cleanup and minor bugs caused by forgotten debug lines

v1.5.0

  • add incremental counter as TimeStamp option
  • add option to write a Sqlite DB for collecting logs
  • improve performance of TimeStamps
  • Disable StackTraces by default

v1.4.0

  • add Timestamps to BepInEx logs
  • removed AsyncLogger from exception stackTraces (BepInEx only)

v1.3.0

  • make the mod a PrePatcher ( meaning will load before everybody else )
  • allow for multiple IJobs ( if somebody wants to have BepInEx use Jobs too )
  • add LobbyCompatibility softDependency

v1.2.7

  • use non-unsigned values to calculate the wrapPoint ( make the patch actually work )

v1.2.6

  • dispose of BepInEx loggers when wrapper is disposed
  • use Application.quitting instead of Application.wantsToQuit

v1.2.5

  • apply circular buffer logic and overwrite older logs

v1.2.4

  • avoid a cast at startup

v1.2.3

  • change threads to not background

v1.2.2

  • small improvements
  • add config to decide the Shutdown Action

v1.2.1

  • use a size-limited RingBuffer instead of indefinitely growing buffer
  • add config options for buffer sizes

v1.2.0

  • added Scheduler type selection

v1.1.0

  • Improved performance
  • Added Error handling of logs