CCF
Loading...
Searching...
No Matches
ringbuffer_logger.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "ccf/ds/logger.h"
6
7namespace ccf
8{
10 {
11 protected:
13
14 // Current time, as us duration since epoch (from system_clock). Used to
15 // produce offsets to host time when logging from inside the enclave
16 std::atomic<std::chrono::microseconds> us = {};
17
18 public:
19 RingbufferLogger(const ringbuffer::WriterPtr& writer_) : writer(writer_) {}
20
21 void write(
22 const ccf::logger::LogLine& line,
23 const std::optional<double>& enclave_offset = std::nullopt) override
24 {
25 writer->write(
26 AdminMessage::log_msg,
27 us.load().count(),
28 line.file_name,
29 line.line_number,
30 line.log_level,
31 line.tag,
32 line.thread_id,
33 line.msg);
34 }
35
36 void set_time(std::chrono::microseconds us_)
37 {
38 us.exchange(us_);
39 }
40 };
41}
Definition ringbuffer_logger.h:10
std::atomic< std::chrono::microseconds > us
Definition ringbuffer_logger.h:16
void write(const ccf::logger::LogLine &line, const std::optional< double > &enclave_offset=std::nullopt) override
Definition ringbuffer_logger.h:21
RingbufferLogger(const ringbuffer::WriterPtr &writer_)
Definition ringbuffer_logger.h:19
void set_time(std::chrono::microseconds us_)
Definition ringbuffer_logger.h:36
ringbuffer::WriterPtr writer
Definition ringbuffer_logger.h:12
Definition logger.h:112
Definition app_interface.h:15
std::shared_ptr< AbstractWriter > WriterPtr
Definition ring_buffer_types.h:150
Definition logger.h:45
size_t line_number
Definition logger.h:51
uint16_t thread_id
Definition logger.h:52
std::string file_name
Definition logger.h:50
std::string tag
Definition logger.h:49
std::string msg
Definition logger.h:55
LoggerLevel log_level
Definition logger.h:48