StandardLogger2.h#

Fully qualified name: carb/logging/StandardLogger2.h

File members: carb/logging/StandardLogger2.h

// SPDX-FileCopyrightText: Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: LicenseRef-NvidiaProprietary
//
// NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
// property and proprietary rights in and to this material, related
// documentation and any modifications thereto. Any use, reproduction,
// disclosure or distribution of this material and related documentation
// without an express license agreement from NVIDIA CORPORATION or
// its affiliates is strictly prohibited.

#pragma once

#include "LoggingTypes.h"
#include "ILogging.h"

namespace carb
{
namespace logging
{

struct Logger;
struct Logger2;
struct StandardLogger;

#if CARB_VERSION_ATLEAST(carb_logging_ILogging, 1, 2)

using LogDestinations = uint32_t;

constexpr LogDestinations fLogDestinationNone = 0x00;

constexpr LogDestinations fLogDestinationStandardStreams = 0x01;

constexpr LogDestinations fLogDestinationLogFile = 0x02;

constexpr LogDestinations fLogDestinationDebugConsole = 0x04;
#endif

#if CARB_VERSION_ATLEAST(carb_logging_ILogging, 1, 1)

class StandardLogger2
{
    // This class's ABI is versioned by the ILogging version.
public:
    virtual void addRef() = 0;

    virtual void release() = 0;

#    if CARB_VERSION_ATLEAST(carb_logging_ILogging, 1, 3)
    CARB_DEPRECATED("Use getLogger() instead") virtual Logger* getLoggerOld() = 0;
#    else
    virtual Logger* getLogger() = 0;
#    endif

    virtual void setFilenameIncluded(bool included) = 0;

    virtual void setLineNumberIncluded(bool included) = 0;

    virtual void setFunctionNameIncluded(bool included) = 0;

    virtual void setTimestampIncluded(bool included) = 0;

    virtual void setThreadIdIncluded(bool included) = 0;

    virtual void setSourceIncluded(bool included) = 0;

    virtual void setStandardStreamOutput(bool enabled) = 0;

    virtual void setDebugConsoleOutput(bool enabled) = 0;

    virtual void setFileOutput(const char* filePath) = 0;

    virtual void setFileOuputFlushLevel(int32_t level) = 0;

    virtual void setFlushStandardStreamOutput(bool enabled) = 0;

    virtual void setElapsedTimeUnits(const char* units) = 0;

    virtual void setProcessIdIncluded(bool enabled) = 0;

    virtual void setMultiProcessGroupId(int32_t id) = 0;

    virtual void setColorOutputIncluded(bool enabled) = 0;

    virtual void setOutputStream(OutputStream outputStream) = 0;

    virtual void setStandardStreamOutputLevelThreshold(int32_t level) = 0;

    virtual void setDebugConsoleOutputLevelThreshold(int32_t level) = 0;

    virtual void setFileOutputLevelThreshold(int32_t level) = 0;

    virtual void setFileConfiguration(const char* filePath, const LogFileConfiguration* config) = 0;

    virtual size_t getFileConfiguration(char* buffer, size_t bufferSize, LogFileConfiguration* config) = 0;

    virtual void pauseFileLogging() = 0;

    virtual void resumeFileLogging() = 0;

    virtual void setForceAnsiColor(bool forceAnsiColor) = 0;

    virtual void setLevelThresholdThreadOverride(OutputType type, int32_t level) = 0;

    virtual void clearLevelThresholdThreadOverride(OutputType type) = 0;

#    if CARB_VERSION_ATLEAST(carb_logging_ILogging, 1, 2)
    virtual LogDestinations getConfiguredLogDestinationsForLevel(int32_t level) = 0;
#    endif

#    if CARB_VERSION_ATLEAST(carb_logging_ILogging, 1, 3)
    virtual void setTraceIdIncluded(bool state) = 0;

    virtual Logger2* getLogger() = 0;
    // FIXME!! should we also be exposing 'get' functions for each of the various logger settings?
#    endif
    // Functions may be added to this class as long as it is not inherited from (as an interface) and ILogging's minor
    // version is incremented.
};

#endif

} // namespace logging
} // namespace carb