libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
Ship::Logger Class Reference

Component wrapper around an spdlog::logger instance. More...

#include <Logger.h>

Inheritance diagram for Ship::Logger:
[legend]
Collaboration diagram for Ship::Logger:
[legend]

Public Member Functions

 Logger (const std::string &appName, const std::string &logFilePath)
 Constructs a Logger with the given application name and log file path.
 
 ~Logger () override
 
std::shared_ptr< spdlog::logger > Get () const
 Returns the underlying spdlog logger, or nullptr before Init().
 
- Public Member Functions inherited from Ship::Component
 Component (const std::string &name, std::shared_ptr< Context > context=nullptr)
 Constructs a Component with the given name.
 
virtual ~Component ()
 
void Init (const nlohmann::json &initArgs=nlohmann::json::object())
 Performs one-time initialization of this component.
 
bool IsInitialized () const
 Returns true once Init() (or MarkInitialized()) has completed successfully.
 
const std::string & GetName () const
 Returns the name of this Component.
 
std::string ToString () const
 Returns a human-readable string representation (e.g. "Name (id)").
 
std::string ToTreeString (int depth=0) const
 Returns a human-readable tree representation of this component and its children.
 
 operator std::string () const
 Conversion operator to std::string; equivalent to ToString().
 
ParentComponentListGetParents ()
 Returns a mutable reference to the parent list.
 
const ParentComponentListGetParents () const
 Returns a const reference to the parent list.
 
ComponentListGetChildren ()
 Returns a mutable reference to the child list.
 
const ComponentListGetChildren () const
 Returns a const reference to the child list.
 
virtual std::shared_ptr< ComponentTryGetSharedComponent () noexcept
 Returns a shared_ptr to this Component when available, otherwise nullptr.
 
virtual std::shared_ptr< ComponentGetSharedComponent ()
 Returns a shared_ptr to this Component via the correct enable_shared_from_this base.
 
template<typename T >
bool HasInChildren () const
 Checks whether any descendant Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInChildren () const
 Returns the first descendant that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInChildren () const
 Returns all descendants that match type T via BFS.
 
template<typename T >
bool HasInParents () const
 Checks whether any ancestor Component matches type T via BFS.
 
template<typename T >
std::shared_ptr< T > GetFirstInParents () const
 Returns the first ancestor that matches type T via BFS.
 
template<typename T >
std::shared_ptr< std::vector< std::shared_ptr< T > > > GetInParents () const
 Returns all ancestors that match type T via BFS.
 
- Public Member Functions inherited from Ship::Part
 Part ()
 Constructs a Part and assigns it a unique ID.
 
 Part (std::shared_ptr< Context > context)
 Constructs a Part with an explicit Context reference and unique ID.
 
virtual ~Part ()=default
 
uint64_t GetId () const
 Returns the unique identifier for this Part.
 
bool operator== (const Part &other) const
 Compares two Parts for equality by their unique IDs.
 
std::shared_ptr< ContextGetContext () const
 Returns the Context this Part belongs to, or nullptr if unset.
 
void SetContext (std::shared_ptr< Context > ctx)
 Sets the Context this Part belongs to.
 

Protected Member Functions

void OnInit (const nlohmann::json &initArgs) override
 Override this to implement component-specific initialization logic.
 
- Protected Member Functions inherited from Ship::Component
void MarkInitialized ()
 Marks this component as initialized without going through Init().
 
template<typename T >
std::shared_ptr< T > RequireDependency (const std::shared_ptr< T > &dependency, const std::string &dependencyName) const
 Returns a cached dependency after validating it exists and is initialized.
 
- Protected Member Functions inherited from Ship::Part
virtual void OnAdded (bool forced)
 Called after this Part has been added to a PartList.
 
virtual void OnRemoved (bool forced)
 Called after this Part has been removed from a PartList.
 

Detailed Description

Component wrapper around an spdlog::logger instance.

Logger owns the spdlog thread-pool, sinks, and default logger. It initialises them in OnInit() so that the component hierarchy is established before logging begins, and shuts them down in ~Logger() so that no log calls race against destruction.

Required Context children: None — Logger has no dependencies on other components.

Obtain the instance from Context::GetChildren().GetFirst<Logger>().

Constructor & Destructor Documentation

◆ Logger()

Ship::Logger::Logger ( const std::string &  appName,
const std::string &  logFilePath 
)

Constructs a Logger with the given application name and log file path.

The spdlog thread-pool and sinks are created in OnInit(); the constructor is cheap and safe to call before the context is fully wired.

Parameters
appNameHuman-readable application name used as the logger name and included in the rotating log file name.
logFilePathAbsolute path to the rotating log file.

◆ ~Logger()

Ship::Logger::~Logger ( )
override

Member Function Documentation

◆ Get()

std::shared_ptr< spdlog::logger > Ship::Logger::Get ( ) const

Returns the underlying spdlog logger, or nullptr before Init().

Returns
A shared pointer to the spdlog::logger.

◆ OnInit()

void Ship::Logger::OnInit ( const nlohmann::json &  initArgs)
overrideprotectedvirtual

Override this to implement component-specific initialization logic.

Called by Init() the first time it is invoked. After OnInit() returns without throwing, the component is marked as initialized. If OnInit() throws, the component remains uninitialized so Init() may be retried.

Parameters
initArgsJSON object with component-specific initialization arguments from the build hierarchy. Default implementation ignores them.

Components with initialization parameters (ResourceManager, Window, …) provide their own Init(…) overload instead of overriding this method.

The default implementation is a no-op.

Reimplemented from Ship::Component.


The documentation for this class was generated from the following file: