singlog/CHANGELOG.md

5.2 KiB

Changelog

[1.0.0] - 2025-03-23

Added

  • Thread-safety: Added a Mutex to ensure thread-safe logging operations across all methods (_mutex in Log class).
  • Destructor: Implemented ~this() to properly close the log file when the Log instance is destroyed.
  • File handle management: Introduced _file (File handle) and _fileOpen (flag) for better file management, reducing repeated file opening/closing.
  • Enhanced documentation: Added detailed DDoc comments for the module, Log class, and all public/private methods, including examples.
  • Immutable arrays: Made _sysPriority, _sysPriorityOS, _color (Windows), _colorCodes (both platforms), and _type arrays immutable for better safety and performance.
  • Singleton initialization: Improved singleton pattern with double-checked locking in @property static Log msg() for thread-safe initialization.
  • Fluent interface naming: Renamed output-related enums (SYSLOG, STD, FILE) and methods (std, syslog, file) for consistency and clarity (e.g., STDOUTSTD).
  • Error handling: Enhanced error reporting in writefile by logging exception messages instead of the full exception object.

Changed

  • Output handling:
    • Removed separate writestdout and writestderr methods; consolidated into a single writestd method that dynamically selects stdout or stderr based on log level (ERROR and above go to stderr, others to stdout).
    • Adjusted output enum values: SYSLOG = 1, STD = 2, FILE = 8 (removed STDERR = 4 as it's now handled by STD).
  • Windows-specific:
    • Renamed _color to _colorCodes for consistency with POSIX.
    • Updated writesyslog to use toUTF16z() for _name and added null checks.
  • POSIX-specific:
    • Renamed _color to _colorCodes and simplified console output logic in writestd.
    • Changed writesyslog to pass priority directly instead of mapping it.
  • Log level filtering: Moved priority check (_priority > priority) into writelog under the mutex for consistency.
  • File logging:
    • Simplified writefile by maintaining an open File handle (_file) instead of opening/closing on each write.
    • Removed redundant file existence check (this._path.exists) as File opening handles it implicitly.
  • Configuration methods: Made all setters (program, file, level, color, output) thread-safe with synchronized (_mutex).
  • Naming consistency:
    • Renamed Output.output() to internal use; public access is via Output struct methods.

Removed

  • Deprecated method: Removed the deprecated Log output(int outs) method; users must now use the fluent Output struct.
  • Redundant output flags: Removed STDERR from output enum as it's now handled dynamically by STD.
  • Unnecessary struct fields: Removed _output and _newoutput from Output struct; replaced with a single value field.
  • Redundant methods: Removed separate writestdout and writestderr in favor of writestd.

Fixed

  • Windows console output: Added error checking in colorTextOutput and defaultTextOutput with GetConsoleScreenBufferInfo.
  • File closing: Ensured proper file closure in file method when changing the log file path.

Breaking Changes

  • Output enum changes:
    • STDOUT renamed to STD, STDERR removed; code relying on STDERR = 4 will need adjustment.
    • Users must update output configuration to use STD instead of separate STDOUT/STDERR.
  • Method removal: Code using the deprecated Log output(int outs) must switch to Log.output(Output).
  • Console output behavior: Messages with priority ERROR and above now go to stderr by default when STD is enabled, which may change existing output redirection logic.

[0.5.0] - 2023-07-21

New

  • Added the ability to output messages to the standard error stream. Now messages above the WARNING level will not be output to the stdout. To output them, need to use stderr
  • Write message to specific outputs via log.now
  • Now log.output allows to set the output as an argument
  • Now log.level allows to set the level as an argument

Bug fixes

  • Fixed streams redirection in Windows

[0.4.0] - 2023-06-07

  • Part of the code has been changed/rewritten

New

  • Color output of messages to the terminal and console

Bug fixes

  • In Windows, unicode messages are output without distortion to the system log and console (thanks Adam D. Ruppe)

[0.3.2] - 2023-06-01

  • Printing information about the type of the logged message to the standard output stream and file
  • Printing the date and time to the standard output stream

[0.3.1] - 2023-05-30

Bug fixes

  • Log of debug messages

[0.3.0] - 2023-04-28

  • Minor changes

New

  • Windows OS Logging support

[0.2.1] - 2023-03-29

New

  • Added aliases for the short form of function calls

Bug fixes

  • Calling the main object

[0.2.0] - 2023-03-29

  • Removed functions fileOn() and fileOff()

New

  • Simultaneous writing to the standard stream, syslog and file by binary setting the output flag

[0.1.0] - 2023-03-23

The first stable working release

  • Output to the standard stream or syslog
  • Enable an entry in the file