blob: 932b9d9b1f25e91cd0a3c019d32091aaa1add942 [file] [log] [blame]
// Copyright 2018 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 "logger.h"
#include <lib/syslog/global.h>
namespace syslog {
namespace {
const char* StripDots(const char* path) {
while (strncmp(path, "../", 3) == 0)
path += 3;
return path;
}
const char* StripPath(const char* path) {
const char* p = strrchr(path, '/');
if (p)
return p + 1;
else
return path;
}
} // namespace
namespace internal {
LogMessage::LogMessage(fx_log_severity_t severity, const char* file, int line,
const char* tag, const char* condition)
: severity_(severity), file_(file), line_(line), tag_(tag) {
stream_ << (severity > FX_LOG_INFO ? StripDots(file_) : StripPath(file_))
<< "(" << line_ << "): ";
if (condition)
stream_ << "Check failed: " << condition << ": ";
}
LogMessage::~LogMessage() {
fx_logger_t* logger = fx_log_get_logger();
if (logger) {
fx_logger_log(logger, severity_, tag_, stream_.str().c_str());
}
}
} // namespace internal
} // namespace syslog