Browse Source

[3752] Add the immediate flush flag

Francis Dupont 10 years ago
parent
commit
58a55649f2

+ 3 - 2
src/lib/dhcpsrv/logging.h

@@ -1,4 +1,4 @@
-// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014, 2015 Internet Systems Consortium, Inc. ("ISC")
 //
 // Permission to use, copy, modify, and/or distribute this software for any
 // purpose with or without fee is hereby granted, provided that the above
@@ -80,7 +80,8 @@ private:
     ///         {
     ///             "output": "/var/log/kea-warn.log",
     ///             "maxver": 8,
-    ///             "maxsize": 204800
+    ///             "maxsize": 204800,
+    ///             "flush": ture
     ///         }
     ///     ],
     /// @param destination parsed parameters will be stored here

+ 7 - 0
src/lib/dhcpsrv/logging.spec

@@ -47,6 +47,13 @@
               "item_type": "integer",
               "item_optional": true,
               "item_default": 204800
+            },
+
+            {
+              "item_name": "flush",
+              "item_type": "boolean",
+              "item_optional": true,
+              "item_default": true
             }
             ]
           },

+ 5 - 1
src/lib/dhcpsrv/logging_info.cc

@@ -26,7 +26,8 @@ bool
 LoggingDestination::equals(const LoggingDestination& other) const {
     return (output_ == other.output_ &&
             maxver_ == other.maxver_ &&
-            maxsize_ == other.maxsize_);
+            maxsize_ == other.maxsize_ &&
+            flush_ == other.flush_);
 }
 
 LoggingInfo::LoggingInfo()
@@ -134,6 +135,9 @@ LoggingInfo::toSpec() const {
             option.filename = dest->output_;
         }
 
+        // Copy the immediate flush flag
+        option.flush = flush_;
+
         // ... and set the destination
         spec.addOutputOption(option);
     }

+ 7 - 3
src/lib/dhcpsrv/logging_info.h

@@ -1,4 +1,4 @@
-// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014, 2015 Internet Systems Consortium, Inc. ("ISC")
 //
 // Permission to use, copy, modify, and/or distribute this software for any
 // purpose with or without fee is hereby granted, provided that the above
@@ -40,6 +40,9 @@ struct LoggingDestination {
     /// @brief Maximum log file size
     uint64_t maxsize_;
 
+    /// @brief Immediate flush
+    bool flush_;
+
     /// @brief Compares two objects for equality.
     ///
     /// @param other Object to be compared with this object.
@@ -49,7 +52,7 @@ struct LoggingDestination {
 
     /// @brief Default constructor.
     LoggingDestination()
-        : output_("stdout"), maxver_(1), maxsize_(204800) {
+        : output_("stdout"), maxver_(1), maxsize_(204800), flush_(true) {
     }
 };
 
@@ -63,7 +66,8 @@ struct LoggingDestination {
 ///                {
 ///                    "output": "/path/to/the/logfile.log",
 ///                    "maxver": 8,
-///                    "maxsize": 204800
+///                    "maxsize": 204800,
+///                    "flush": true
 ///                }
 ///            ],
 ///            "severity": "WARN",