X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2Fexperimental%2Flogging%2FLogWriter.h;h=6d6158c9a7353f38ee9c9895a16bcb4bff37d247;hp=e5b2ffe5904910f232ad1404d935996539c3b172;hb=84458670bb24056e0bb65d50b1653dcf0636f776;hpb=1b5a7dbf79e5cbcb0e99d7d37b87d158cc7a4e6d diff --git a/folly/experimental/logging/LogWriter.h b/folly/experimental/logging/LogWriter.h index e5b2ffe5..6d6158c9 100644 --- a/folly/experimental/logging/LogWriter.h +++ b/folly/experimental/logging/LogWriter.h @@ -24,12 +24,32 @@ namespace folly { */ class LogWriter { public: + /** + * Bit flag values for use with writeMessage() + */ + enum Flags : uint32_t { + NO_FLAGS = 0x00, + /** + * Ensure that this log message never gets discarded. + * + * Some LogWriter implementations may discard messages when messages are + * being received faster than they can be written. This flag ensures that + * this message will never be discarded. + * + * This flag is used to ensure that LOG(FATAL) messages never get + * discarded, so we always report the reason for a crash. + */ + NEVER_DISCARD = 0x01, + }; + virtual ~LogWriter() {} /** * Write a serialized log message. + * + * The flags parameter is a bitwise-ORed set of Flag values defined above. */ - virtual void writeMessage(folly::StringPiece buffer) = 0; + virtual void writeMessage(folly::StringPiece buffer, uint32_t flags = 0) = 0; /** * Write a serialized message. @@ -39,8 +59,8 @@ class LogWriter { * writeMessage(), but subclasses may override this implementation if * desired. */ - virtual void writeMessage(std::string&& buffer) { - writeMessage(folly::StringPiece{buffer}); + virtual void writeMessage(std::string&& buffer, uint32_t flags = 0) { + writeMessage(folly::StringPiece{buffer}, flags); } }; }