You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
4 months ago
|
// Copyright 2017 The Chromium OS Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#ifndef _BSDIFF_LOGGING_H_
|
||
|
#define _BSDIFF_LOGGING_H_
|
||
|
|
||
|
#include <string.h>
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <sstream>
|
||
|
|
||
|
// Simple error logging macro to avoid dependencies in other base libraries.
|
||
|
#define LOG(severity) LogMessage(__FILE__, __LINE__, #severity).stream()
|
||
|
|
||
|
// A variant of LOG that also logs the current errno value.
|
||
|
#define PLOG(severity) LogMessage(__FILE__, __LINE__, #severity, errno).stream()
|
||
|
|
||
|
// A temporarily scoped object used by LOG & PLOG.
|
||
|
class LogMessage {
|
||
|
public:
|
||
|
LogMessage(const char* file, unsigned int line, const char* severity);
|
||
|
|
||
|
LogMessage(const char* file,
|
||
|
unsigned int line,
|
||
|
const char* severity,
|
||
|
int error);
|
||
|
|
||
|
~LogMessage();
|
||
|
|
||
|
// Returns the stream associated with the message, the LogMessage performs
|
||
|
// output when it goes out of scope.
|
||
|
std::ostream& stream() { return stream_; }
|
||
|
|
||
|
private:
|
||
|
std::ostringstream stream_;
|
||
|
int error_; // The saved errno value.
|
||
|
};
|
||
|
|
||
|
#endif // _BSDIFF_LOGGING_H_
|