]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: hlua: Be able to disable logging from lua
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 29 Feb 2024 14:41:17 +0000 (15:41 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 1 Mar 2024 14:01:18 +0000 (15:01 +0100)
Add core.silent (-1) value to be able to disable logging via
TXN:set_loglevel() call. Otherwise, there is no way to do so and it may be
handy. This special value cannot be used with TXN:log() function.

This patch may be backported if necessary.

doc/lua-api/index.rst
src/hlua.c

index 05b0c636b9108d6a4626765bf89da3d504f99f35..8674d57eb70061a4b8cfd26f72381e8cecf6f292 100644 (file)
@@ -159,6 +159,13 @@ Core class
    The "core" class is static, it is not possible to create a new object of this
    type.
 
+.. js:attribute:: core.silent
+
+  :returns: integer
+
+  This attribute is an integer, it contains the value -1. It is a special value
+  used to disable logging.
+
 .. js:attribute:: core.emerg
 
   :returns: integer
@@ -2889,12 +2896,12 @@ TXN class
 .. js:function:: TXN.set_loglevel(txn, loglevel)
 
   Is used to change the log level of the current request. The "loglevel" must
-  be an integer between 0 and 7.
+  be an integer between 0 and 7 or the special value -1 to disable logging.
 
   :param class_txn txn: The class txn object containing the data.
   :param integer loglevel: The required log level. This variable can be one of
-  :see: :js:attr:`core.emerg`, :js:attr:`core.alert`, :js:attr:`core.crit`,
-    :js:attr:`core.err`, :js:attr:`core.warning`, :js:attr:`core.notice`,
+  :see: :js:attr:`core.silent`, :js:attr:`core.emerg`, :js:attr:`core.alert`,
+    :js:attr:`core.crit`, :js:attr:`core.err`, :js:attr:`core.warning`, :js:attr:`core.notice`,
     :js:attr:`core.info`, :js:attr:`core.debug` (log level definitions)
 
 .. js:function:: TXN.set_mark(txn, mark)
index fdbd2cbc2f9e4b4f18e0267c31c0a79d16f429db..d915b1087427dba9dbb5d17bfbb3c375a6aaf975 100644 (file)
@@ -8243,10 +8243,12 @@ __LJMP static int hlua_txn_set_loglevel(lua_State *L)
        htxn = MAY_LJMP(hlua_checktxn(L, 1));
        ll = MAY_LJMP(luaL_checkinteger(L, 2));
 
-       if (ll < 0 || ll > 7)
-               WILL_LJMP(luaL_argerror(L, 2, "Bad log level. It must be between 0 and 7"));
+       if (ll < -1 || ll > NB_LOG_LEVELS)
+               WILL_LJMP(luaL_argerror(L, 2, "Bad log level. It must be one of the following value:"
+                                       " core.silent(-1), core.emerg(0), core.alert(1), core.crit(2), core.error(3),"
+                                       " core.warning(4), core.notice(5), core.info(6) or core.debug(7)"));
 
-       htxn->s->logs.level = ll + 1;
+       htxn->s->logs.level = (ll == -1) ? ll : ll + 1;
        return 0;
 }
 
@@ -13345,6 +13347,7 @@ lua_State *hlua_init_state(int thread_num)
        hlua_class_const_int(L, "thread", thread_num);
 
        /* Push the loglevel constants. */
+               hlua_class_const_int(L, "silent", -1);
        for (i = 0; i < NB_LOG_LEVELS; i++)
                hlua_class_const_int(L, log_levels[i], i);