Tarantool development patches archive
 help / color / mirror / Atom feed
* [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
@ 2021-05-07 11:13 Cyrill Gorcunov via Tarantool-patches
  2021-05-07 11:17 ` Cyrill Gorcunov via Tarantool-patches
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Cyrill Gorcunov via Tarantool-patches @ 2021-05-07 11:13 UTC (permalink / raw)
  To: tml; +Cc: Alexander Turenko

Currently `log` module accepts only numeric values of
logging levels. I turn `box.cfg` interface supports
symbolic names (such as 'fatat', 'crit' and etc).

Thus we should support the same in `log` module.

Closes #5882

Reported-by: Alexander Turenko <alexander.turenko@tarantool.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
issue https://github.com/tarantool/tarantool/issues/5882
branch gorcunov/gh-5882-logger-strings

 changelogs/unreleased/gh-5882-log-levels.md | 13 +++++++++++++
 src/lua/log.lua                             |  6 ++++++
 2 files changed, 19 insertions(+)
 create mode 100644 changelogs/unreleased/gh-5882-log-levels.md

diff --git a/changelogs/unreleased/gh-5882-log-levels.md b/changelogs/unreleased/gh-5882-log-levels.md
new file mode 100644
index 000000000..08f9595be
--- /dev/null
+++ b/changelogs/unreleased/gh-5882-log-levels.md
@@ -0,0 +1,13 @@
+## feature/lua/log
+
+ * Implemented support of symbolic log levels representation
+   in `log` module (gh-5882). Now it is possible to specify
+   levels the same way as in `box.cfg{}` call. For example
+   instead of
+   ``` Lua
+   require('log').cfg{level = 6}
+   ```
+   One can use
+   ``` Lua
+   require('log').cfg{level = 'verbose'}
+   ```
diff --git a/src/lua/log.lua b/src/lua/log.lua
index 62ea61f2d..788560722 100644
--- a/src/lua/log.lua
+++ b/src/lua/log.lua
@@ -499,6 +499,12 @@ local function load_cfg(self, cfg)
             local m = "log.cfg: \'%s\' %s"
             error(m:format('level', msg))
         end
+        -- Convert level to a numeric value since
+        -- low level api operates with numbers only.
+        if type(cfg.level) == 'string' then
+            assert(log_level_keys[cfg.level] ~= nil)
+            cfg.level = log_level_keys[cfg.level]
+        end
     end
 
     if cfg.nonblock ~= nil then
-- 
2.30.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
  2021-05-07 11:13 [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels Cyrill Gorcunov via Tarantool-patches
@ 2021-05-07 11:17 ` Cyrill Gorcunov via Tarantool-patches
  2021-05-26 11:04 ` Serge Petrenko via Tarantool-patches
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Cyrill Gorcunov via Tarantool-patches @ 2021-05-07 11:17 UTC (permalink / raw)
  To: tml; +Cc: Alexander Turenko

On Fri, May 07, 2021 at 02:13:05PM +0300, Cyrill Gorcunov wrote:
> Currently `log` module accepts only numeric values of
> logging levels. I turn `box.cfg` interface supports
> symbolic names (such as 'fatat', 'crit' and etc).
                           ^^^^^
Typo, should be 'fatal'. Force pushed an update.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
  2021-05-07 11:13 [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels Cyrill Gorcunov via Tarantool-patches
  2021-05-07 11:17 ` Cyrill Gorcunov via Tarantool-patches
@ 2021-05-26 11:04 ` Serge Petrenko via Tarantool-patches
  2021-05-26 22:04 ` Alexander Turenko via Tarantool-patches
  2021-06-01 12:25 ` Kirill Yukhin via Tarantool-patches
  3 siblings, 0 replies; 8+ messages in thread
From: Serge Petrenko via Tarantool-patches @ 2021-05-26 11:04 UTC (permalink / raw)
  To: Cyrill Gorcunov, tml; +Cc: Alexander Turenko



07.05.2021 14:13, Cyrill Gorcunov via Tarantool-patches пишет:
> Currently `log` module accepts only numeric values of
> logging levels. I turn `box.cfg` interface supports
> symbolic names (such as 'fatat', 'crit' and etc).
>
> Thus we should support the same in `log` module.
>
> Closes #5882
>
> Reported-by: Alexander Turenko <alexander.turenko@tarantool.org>
> Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
> ---
> issue https://github.com/tarantool/tarantool/issues/5882
> branch gorcunov/gh-5882-logger-strings
>
>   changelogs/unreleased/gh-5882-log-levels.md | 13 +++++++++++++
>   src/lua/log.lua                             |  6 ++++++
>   2 files changed, 19 insertions(+)
>   create mode 100644 changelogs/unreleased/gh-5882-log-levels.md
>
> diff --git a/changelogs/unreleased/gh-5882-log-levels.md b/changelogs/unreleased/gh-5882-log-levels.md
> new file mode 100644
> index 000000000..08f9595be
> --- /dev/null
> +++ b/changelogs/unreleased/gh-5882-log-levels.md
> @@ -0,0 +1,13 @@
> +## feature/lua/log
> +
> + * Implemented support of symbolic log levels representation
> +   in `log` module (gh-5882). Now it is possible to specify
> +   levels the same way as in `box.cfg{}` call. For example
> +   instead of
> +   ``` Lua
> +   require('log').cfg{level = 6}
> +   ```
> +   One can use
> +   ``` Lua
> +   require('log').cfg{level = 'verbose'}
> +   ```
> diff --git a/src/lua/log.lua b/src/lua/log.lua
> index 62ea61f2d..788560722 100644
> --- a/src/lua/log.lua
> +++ b/src/lua/log.lua
> @@ -499,6 +499,12 @@ local function load_cfg(self, cfg)
>               local m = "log.cfg: \'%s\' %s"
>               error(m:format('level', msg))
>           end
> +        -- Convert level to a numeric value since
> +        -- low level api operates with numbers only.
> +        if type(cfg.level) == 'string' then
> +            assert(log_level_keys[cfg.level] ~= nil)
> +            cfg.level = log_level_keys[cfg.level]
> +        end
>       end
>   
>       if cfg.nonblock ~= nil then

Hi! Thanks for the patch!
LGTM.

-- 
Serge Petrenko


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
  2021-05-07 11:13 [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels Cyrill Gorcunov via Tarantool-patches
  2021-05-07 11:17 ` Cyrill Gorcunov via Tarantool-patches
  2021-05-26 11:04 ` Serge Petrenko via Tarantool-patches
@ 2021-05-26 22:04 ` Alexander Turenko via Tarantool-patches
  2021-05-27  7:53   ` Cyrill Gorcunov via Tarantool-patches
  2021-06-01 12:25 ` Kirill Yukhin via Tarantool-patches
  3 siblings, 1 reply; 8+ messages in thread
From: Alexander Turenko via Tarantool-patches @ 2021-05-26 22:04 UTC (permalink / raw)
  To: Cyrill Gorcunov; +Cc: tml

Sorry for the late response.

Looks nice! LGTM.

If you'll have a free time, it would be good to add a simple test case:
just to automatically verify it for regressions in a future.

WBR, Alexander Turenko.

On Fri, May 07, 2021 at 02:13:05PM +0300, Cyrill Gorcunov wrote:
> Currently `log` module accepts only numeric values of
> logging levels. I turn `box.cfg` interface supports
> symbolic names (such as 'fatal', 'crit' and etc).
> 
> Thus we should support the same in `log` module.
> 
> Closes #5882
> 
> Reported-by: Alexander Turenko <alexander.turenko@tarantool.org>
> Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
> ---
> issue https://github.com/tarantool/tarantool/issues/5882
> branch gorcunov/gh-5882-logger-strings
>
> <...>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
  2021-05-26 22:04 ` Alexander Turenko via Tarantool-patches
@ 2021-05-27  7:53   ` Cyrill Gorcunov via Tarantool-patches
  2021-05-27  9:04     ` Alexander Turenko via Tarantool-patches
  0 siblings, 1 reply; 8+ messages in thread
From: Cyrill Gorcunov via Tarantool-patches @ 2021-05-27  7:53 UTC (permalink / raw)
  To: Alexander Turenko; +Cc: tml

On Thu, May 27, 2021 at 01:04:54AM +0300, Alexander Turenko wrote:
> Sorry for the late response.
> 
> Looks nice! LGTM.
> 
> If you'll have a free time, it would be good to add a simple test case:
> just to automatically verify it for regressions in a future.
> 

Thanks! I force pushed an update where a test added (we can extend
it in future).

branch gorcunov/gh-5882-logger-strings
issue https://github.com/tarantool/tarantool/issues/5882
---
From: Cyrill Gorcunov <gorcunov@gmail.com>
Date: Fri, 7 May 2021 13:59:43 +0300
Subject: [PATCH] lua/log: accept symbolic logging levels

Currently `log` module accepts only numeric values of
logging levels. I turn `box.cfg` interface supports
symbolic names (such as 'fatal', 'crit' and etc).

Thus we should support the same in `log` module.

Closes #5882

Reported-by: Alexander Turenko <alexander.turenko@tarantool.org>
Acked-by: Alexander Turenko <alexander.turenko@tarantool.org>
Acked-by: Serge Petrenko <sergepetrenko@tarantool.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
 changelogs/unreleased/gh-5882-log-levels.md | 13 ++++++++
 src/lua/log.lua                             |  6 ++++
 test/app-tap/logmod.test.lua                | 36 +++++++++++++++++++++
 3 files changed, 55 insertions(+)
 create mode 100644 changelogs/unreleased/gh-5882-log-levels.md
 create mode 100755 test/app-tap/logmod.test.lua

diff --git a/changelogs/unreleased/gh-5882-log-levels.md b/changelogs/unreleased/gh-5882-log-levels.md
new file mode 100644
index 000000000..08f9595be
--- /dev/null
+++ b/changelogs/unreleased/gh-5882-log-levels.md
@@ -0,0 +1,13 @@
+## feature/lua/log
+
+ * Implemented support of symbolic log levels representation
+   in `log` module (gh-5882). Now it is possible to specify
+   levels the same way as in `box.cfg{}` call. For example
+   instead of
+   ``` Lua
+   require('log').cfg{level = 6}
+   ```
+   One can use
+   ``` Lua
+   require('log').cfg{level = 'verbose'}
+   ```
diff --git a/src/lua/log.lua b/src/lua/log.lua
index 62ea61f2d..788560722 100644
--- a/src/lua/log.lua
+++ b/src/lua/log.lua
@@ -499,6 +499,12 @@ local function load_cfg(self, cfg)
             local m = "log.cfg: \'%s\' %s"
             error(m:format('level', msg))
         end
+        -- Convert level to a numeric value since
+        -- low level api operates with numbers only.
+        if type(cfg.level) == 'string' then
+            assert(log_level_keys[cfg.level] ~= nil)
+            cfg.level = log_level_keys[cfg.level]
+        end
     end
 
     if cfg.nonblock ~= nil then
diff --git a/test/app-tap/logmod.test.lua b/test/app-tap/logmod.test.lua
new file mode 100755
index 000000000..68508ce5b
--- /dev/null
+++ b/test/app-tap/logmod.test.lua
@@ -0,0 +1,36 @@
+#!/usr/bin/env tarantool
+
+local test = require('tap').test('log')
+local log = require('log')
+
+test:plan(8)
+
+log.log_format('plain')
+
+-- Test symbolic names for loglevels
+_, err = pcall(log.cfg, {level='fatal'})
+test:ok(err == nil and log.cfg.level == 0, 'both got fatal')
+
+_, err = pcall(log.cfg, {level='syserror'})
+test:ok(err == nil and log.cfg.level == 1, 'got syserror')
+
+_, err = pcall(log.cfg, {level='error'})
+test:ok(err == nil and log.cfg.level == 2, 'got error')
+
+_, err = pcall(log.cfg, {level='crit'})
+test:ok(err == nil and log.cfg.level == 3, 'got crit')
+
+_, err = pcall(log.cfg, {level='warn'})
+test:ok(err == nil and log.cfg.level == 4, 'got warn')
+
+_, err = pcall(log.cfg, {level='info'})
+test:ok(err == nil and log.cfg.level == 5, 'got info')
+
+_, err = pcall(log.cfg, {level='verbose'})
+test:ok(err == nil and log.cfg.level == 6, 'got verbose')
+
+_, err = pcall(log.cfg, {level='debug'})
+test:ok(err == nil and log.cfg.level == 7, 'got debug')
+
+test:check()
+os.exit()
-- 
2.31.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
  2021-05-27  7:53   ` Cyrill Gorcunov via Tarantool-patches
@ 2021-05-27  9:04     ` Alexander Turenko via Tarantool-patches
  2021-05-27 10:17       ` Cyrill Gorcunov via Tarantool-patches
  0 siblings, 1 reply; 8+ messages in thread
From: Alexander Turenko via Tarantool-patches @ 2021-05-27  9:04 UTC (permalink / raw)
  To: Cyrill Gorcunov; +Cc: Vladislav Shpilevoy, tml

On Thu, May 27, 2021 at 10:53:32AM +0300, Cyrill Gorcunov wrote:
> On Thu, May 27, 2021 at 01:04:54AM +0300, Alexander Turenko wrote:
> > Sorry for the late response.
> > 
> > Looks nice! LGTM.
> > 
> > If you'll have a free time, it would be good to add a simple test case:
> > just to automatically verify it for regressions in a future.
> > 
> 
> Thanks! I force pushed an update where a test added (we can extend
> it in future).

> +-- Test symbolic names for loglevels
> +_, err = pcall(log.cfg, {level='fatal'})
> +test:ok(err == nil and log.cfg.level == 0, 'both got fatal')

Now I noticed one difference from box.cfg() behaviour:

 | tarantool> box.cfg{log_level = 'verbose'}
 | tarantool> box.cfg.log_level
 | ---
 | - verbose
 | ...

 | tarantool> log = require('log')
 | tarantool> log.cfg{level = 'verbose'}
 | tarantool> log.cfg.level
 | ---
 | - 6
 | ...

AFAIU, box.cfg.foo generally returns the same that a user provides in
box.cfg({foo = <...>}), without normalization.

The only exception from this rule, known to me, is convertion from a
number to a string for box.cfg.listen:

 | tarantool> box.cfg{listen = 3301}
 | tarantool> box.cfg.listen
 | ---
 | - '3301'
 | ...

I don't know, to be honest, whether the general rule was part of design
or becomes so unintentionally. However, when we add listening on zero
port ([1]), we added a real port into box.info.listen and didn't perform
normalization in box.cfg.listen.

Not a blocker, IMHO, but it worth to think about. I'll add Vlad into the
discussion. Maybe he knows more than me.

[1]: https://github.com/tarantool/tarantool/issues/4620

WBR, Alexander Turenko.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
  2021-05-27  9:04     ` Alexander Turenko via Tarantool-patches
@ 2021-05-27 10:17       ` Cyrill Gorcunov via Tarantool-patches
  0 siblings, 0 replies; 8+ messages in thread
From: Cyrill Gorcunov via Tarantool-patches @ 2021-05-27 10:17 UTC (permalink / raw)
  To: Alexander Turenko; +Cc: Vladislav Shpilevoy, tml

On Thu, May 27, 2021 at 12:04:31PM +0300, Alexander Turenko wrote:
> 
> > +-- Test symbolic names for loglevels
> > +_, err = pcall(log.cfg, {level='fatal'})
> > +test:ok(err == nil and log.cfg.level == 0, 'both got fatal')
> 
> Now I noticed one difference from box.cfg() behaviour:
> 
>  | tarantool> box.cfg{log_level = 'verbose'}
>  | tarantool> box.cfg.log_level
>  | ---
>  | - verbose
>  | ...
> 
>  | tarantool> log = require('log')
>  | tarantool> log.cfg{level = 'verbose'}
>  | tarantool> log.cfg.level
>  | ---
>  | - 6
>  | ...
> 
> AFAIU, box.cfg.foo generally returns the same that a user provides in
> box.cfg({foo = <...>}), without normalization.

Well, as to me this looks somehow inconvenient and worth to implement
symbolic output for log leves I think. As a separate feature.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels
  2021-05-07 11:13 [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels Cyrill Gorcunov via Tarantool-patches
                   ` (2 preceding siblings ...)
  2021-05-26 22:04 ` Alexander Turenko via Tarantool-patches
@ 2021-06-01 12:25 ` Kirill Yukhin via Tarantool-patches
  3 siblings, 0 replies; 8+ messages in thread
From: Kirill Yukhin via Tarantool-patches @ 2021-06-01 12:25 UTC (permalink / raw)
  To: Cyrill Gorcunov; +Cc: tml, Alexander Turenko

Hello,

On 07 май 14:13, Cyrill Gorcunov wrote:
> Currently `log` module accepts only numeric values of
> logging levels. I turn `box.cfg` interface supports
> symbolic names (such as 'fatat', 'crit' and etc).
> 
> Thus we should support the same in `log` module.
> 
> Closes #5882
> 
> Reported-by: Alexander Turenko <alexander.turenko@tarantool.org>
> Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>

I've checked your patch into 2.8 and master.

--
Regards, Kirill Yukhin

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-06-01 12:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-07 11:13 [Tarantool-patches] [PATCH] lua/log: accept symbolic logging levels Cyrill Gorcunov via Tarantool-patches
2021-05-07 11:17 ` Cyrill Gorcunov via Tarantool-patches
2021-05-26 11:04 ` Serge Petrenko via Tarantool-patches
2021-05-26 22:04 ` Alexander Turenko via Tarantool-patches
2021-05-27  7:53   ` Cyrill Gorcunov via Tarantool-patches
2021-05-27  9:04     ` Alexander Turenko via Tarantool-patches
2021-05-27 10:17       ` Cyrill Gorcunov via Tarantool-patches
2021-06-01 12:25 ` Kirill Yukhin via Tarantool-patches

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