blob: 7b4c11684b838c9795ae6e5cc60288e18a6bc9f0 [file] [log] [blame]
// 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 VM_TOOLS_SYSLOG_SCRUBBER_H_
#define VM_TOOLS_SYSLOG_SCRUBBER_H_
#include <string>
#include "host.grpc.pb.h" // NOLINT(build/include)
namespace vm_tools {
namespace syslog {
// Parses |severity| and returns a string that can be used as a valid PRI part
// of a syslog message.
std::string ParseProtoSeverity(vm_tools::LogSeverity severity);
// Parses |timestamp| into an RFC3164 compliant string that can be included as
// part of a syslog message.
std::string ParseProtoTimestamp(const vm_tools::Timestamp& timestamp);
// Scrubs |content| and returns a valid UTF-8 string. Assumes |content| is
// encoded as UTF-8. Invalid code points are replaced with (U+fffd). Control
// characters and other valid but non-character code points are converted into
// octal numbers with a minimum width of 3 digits and prefixed with '#'. For
// example if the BEL character (U+0007) appears in |content| it will be
// converted to "#007".
std::string ScrubProtoContent(const std::string& content);
} // namespace syslog
} // namespace vm_tools
#endif // VM_TOOLS_SYSLOG_SCRUBBER_H_