File size: 2,207 Bytes
bfd87b5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | /**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/core/Core_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSStringStream.h>
namespace Aws
{
namespace Utils
{
namespace Logging
{
enum class LogLevel : int;
/**
* Interface for logging implementations. If you want to write your own logger, you can start here, though you may have more
* luck going down one more level to FormattedLogSystem. It does a bit more of the work for you and still gives you the ability
* to override the IO portion.
*/
class AWS_CORE_API LogSystemInterface
{
public:
virtual ~LogSystemInterface() = default;
/**
* Gets the currently configured log level for this logger.
*/
virtual LogLevel GetLogLevel(void) const = 0;
/**
* Does a printf style output to the output stream. Don't use this, it's unsafe. See LogStream
*/
virtual void Log(LogLevel logLevel, const char* tag, const char* formatStr, ...) = 0;
/**
* va_list overload for Log, avoid using this as well.
*/
virtual void vaLog(LogLevel logLevel, const char* tag, const char* formatStr, va_list args) = 0;
/**
* Writes the stream to the output stream.
*/
virtual void LogStream(LogLevel logLevel, const char* tag, const Aws::OStringStream &messageStream) = 0;
/**
* Writes any buffered messages to the underlying device if the logger supports buffering.
*/
virtual void Flush() = 0;
/**
* Stops logging on this logger without destroying the object.
*/
virtual void Stop() { return; };
};
} // namespace Logging
} // namespace Utils
} // namespace Aws
|