blob: 55d07ec1283fb9405af88c610e74b14bdf8d2f41 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/developer/debug/shared/logging/logging.h"
#include <lib/syslog/cpp/log_level.h>
#include <lib/syslog/cpp/macros.h>
#include <stdio.h>
#include <iostream>
namespace debug {
namespace {
LogBackend* log_backend = nullptr;
bool log_enable_syslog = true;
fuchsia_logging::LogSeverity ConvertSeverity(LogSeverity severity) {
switch (severity) {
case LogSeverity::kInfo:
return fuchsia_logging::LogSeverity::Info;
case LogSeverity::kWarn:
return fuchsia_logging::LogSeverity::Warn;
case LogSeverity::kError:
return fuchsia_logging::LogSeverity::Error;
}
}
} // namespace
LogStatement::~LogStatement() {
if (log_backend) {
log_backend->WriteLog(severity_, location_, stream_.str());
}
if (log_enable_syslog) {
auto severity = ConvertSeverity(severity_);
if (fuchsia_logging::IsSeverityEnabled(severity)) {
fuchsia_logging::LogMessage(severity, location_.file(), static_cast<int>(location_.line()),
nullptr, nullptr)
.stream()
<< stream_.str();
}
}
}
void LogBackend::Set(LogBackend* backend, bool enable_syslog) {
log_backend = backend;
log_enable_syslog = enable_syslog;
}
void LogBackend::Unset() { Set(nullptr, true); }
LogBackend::~LogBackend() = default;
} // namespace debug