Tarantool development patches archive
 help / color / mirror / Atom feed
From: Cyrill Gorcunov <gorcunov@gmail.com>
To: tml <tarantool-patches@dev.tarantool.org>
Cc: Alexander Turenko <alexander.turenko@tarantool.org>
Subject: [Tarantool-patches] [PATCH 07/10] lua/log: use log module settings inside box.cfg
Date: Mon, 25 May 2020 15:17:12 +0300	[thread overview]
Message-ID: <20200525121715.21216-8-gorcunov@gmail.com> (raw)
In-Reply-To: <20200525121715.21216-1-gorcunov@gmail.com>

Since we're going to implement early setup of
logging module we need both.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
 src/box/lua/load_cfg.lua | 21 +++++++++++++++------
 src/lua/log.lua          | 32 +++++++++++++++++++++++++++++++-
 2 files changed, 46 insertions(+), 7 deletions(-)

diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua
index 5d818addf..3cc21bc02 100644
--- a/src/box/lua/load_cfg.lua
+++ b/src/box/lua/load_cfg.lua
@@ -1,4 +1,6 @@
 -- load_cfg.lua - internal file
+--
+-- vim: ts=4 sw=4 et
 
 local log = require('log')
 local json = require('json')
@@ -59,10 +61,6 @@ local default_cfg = {
     vinyl_range_size          = nil, -- set automatically
     vinyl_page_size           = 8 * 1024,
     vinyl_bloom_fpr           = 0.05,
-    log                 = nil,
-    log_nonblock        = nil,
-    log_level           = 5,
-    log_format          = "plain",
     io_collect_interval = nil,
     readahead           = 16320,
     snap_io_rate_limit  = nil, -- no limit
@@ -233,8 +231,8 @@ end
 local dynamic_cfg = {
     listen                  = private.cfg_set_listen,
     replication             = private.cfg_set_replication,
-    log_level               = private.cfg_set_log_level,
-    log_format              = private.cfg_set_log_format,
+    log_level               = log.box_api.set_log_level,
+    log_format              = log.box_api.set_log_format,
     io_collect_interval     = private.cfg_set_io_collect_interval,
     readahead               = private.cfg_set_readahead,
     too_long_threshold      = private.cfg_set_too_long_threshold,
@@ -470,6 +468,16 @@ local function apply_default_cfg(cfg, default_cfg)
     end
 end
 
+local function apply_default_modules_cfg(cfg)
+    --
+    -- logging
+    for k,v in pairs(log.cfg) do
+        if cfg[k] == nil then
+            cfg[k] = v
+        end
+    end
+end
+
 -- Return true if two configurations are equivalent.
 local function compare_cfg(cfg1, cfg2)
     if type(cfg1) ~= type(cfg2) then
@@ -554,6 +562,7 @@ local function load_cfg(cfg)
     cfg = upgrade_cfg(cfg, translate_cfg)
     cfg = prepare_cfg(cfg, default_cfg, template_cfg, modify_cfg)
     apply_default_cfg(cfg, default_cfg);
+    apply_default_modules_cfg(cfg)
     -- Save new box.cfg
     box.cfg = cfg
     if not pcall(private.cfg_check)  then
diff --git a/src/lua/log.lua b/src/lua/log.lua
index c6e03ad78..b26a7afe5 100644
--- a/src/lua/log.lua
+++ b/src/lua/log.lua
@@ -97,6 +97,22 @@ local fmt_str2num = {
     ["json"]            = ffi.C.SF_JSON,
 }
 
+--
+-- Default options. The keys are part of
+-- user API, so change with caution.
+local default_cfg = {
+    log             = nil,
+    log_nonblock    = nil,
+    log_level       = S_INFO,
+    log_format      = fmt_num2str[ffi.C.SF_PLAIN],
+}
+
+local cfg = setmetatable(default_cfg, {
+    __newindex = function()
+        error('log: Attempt to modify a read-only table')
+    end,
+})
+
 local function say(level, fmt, ...)
     if ffi.C.log_level < level then
         -- don't waste cycles on debug.getinfo()
@@ -146,7 +162,8 @@ local function log_rotate()
 end
 
 local function log_level(level)
-    return ffi.C.say_set_log_level(level)
+    ffi.C.say_set_log_level(level)
+    rawset(cfg, 'log_level', level)
 end
 
 local function log_format(name)
@@ -170,6 +187,7 @@ local function log_format(name)
     else
         ffi.C.say_set_log_format(ffi.C.SF_PLAIN)
     end
+    rawset(cfg, 'log_format', name)
 end
 
 local function log_pid()
@@ -197,6 +215,18 @@ return setmetatable({
     pid = log_pid;
     level = log_level;
     log_format = log_format;
+    cfg = cfg,
+    --
+    -- Internal API to box module, not for users,
+    -- names can be changed.
+    box_api = {
+        set_log_level = function()
+            log_level(box.cfg.log_level)
+        end,
+        set_log_format = function()
+            log_format(box.cfg.log_format)
+        end,
+    }
 }, {
     __index = compat_v16;
 })
-- 
2.26.2

  parent reply	other threads:[~2020-05-25 12:18 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-25 12:17 [Tarantool-patches] [PATCH 00/10] lua/log: add an ability to setup logger without box.cfg{} Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 01/10] core/say: drop redundant declarations Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 02/10] core/say: drop vsay declaration Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 03/10] core/say: do not reconfig early set up logger Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 04/10] lua/log: declare say_logger_init and say_logger_initialized Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 05/10] lua/log: put string constants to map Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 06/10] lua/log: do not allow to set json for boot logger Cyrill Gorcunov
2020-05-25 12:17 ` Cyrill Gorcunov [this message]
2020-05-25 15:43   ` [Tarantool-patches] [PATCH 07/10] lua/log: use log module settings inside box.cfg Oleg Babin
2020-05-25 15:49     ` Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 08/10] lua/log: allow to configure logging without a box Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 09/10] lua/log: update log status via box.cfg call Cyrill Gorcunov
2020-05-25 12:17 ` [Tarantool-patches] [PATCH 10/10] test: use direct log module Cyrill Gorcunov
2020-05-25 12:18 ` [Tarantool-patches] [PATCH 00/10] lua/log: add an ability to setup logger without box.cfg{} Cyrill Gorcunov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200525121715.21216-8-gorcunov@gmail.com \
    --to=gorcunov@gmail.com \
    --cc=alexander.turenko@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH 07/10] lua/log: use log module settings inside box.cfg' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox