[patch] ubox: logread: add option to filter priority (log level)

2023-11-21 Thread Isaev Ruslan
This adds an ability to filter log messages priority:
  -v   handle only messages with given log level (0-7), repeatable
  -V   ignore messages with given log level (0-7), repeatable

Signed-off-by: Isaev Ruslan 
---
 log/logread.c | 27 ++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/log/logread.c b/log/logread.c
index f48dd4b..91aae00 100644
--- a/log/logread.c
+++ b/log/logread.c
@@ -66,6 +66,8 @@ static int log_type = LOG_STDOUT;
 static int log_size, log_udp, log_follow, log_trailer_null = 0;
 static int log_timestamp;
 static int logd_conn_tries = LOGD_CONNECT_RETRY;
+static int loglevel_include;
+static int loglevel_exclude;
 static int facility_include;
 static int facility_exclude;

@@ -79,6 +81,16 @@ static int check_facility_filter(int f)
  return 1;
 }

+/* check for loglevel filter; return 0 if message shall be dropped */
+static int check_loglevel_filter(int f)
+{
+ if (loglevel_include)
+   return !!(loglevel_include & (1 << f));
+ if (loglevel_exclude)
+   return !(loglevel_exclude & (1 << f));
+ return 1;
+}
+
 static const char* getcodetext(int value, CODE *codetable) {
  CODE *i;

@@ -155,6 +167,9 @@ static int log_notify(struct blob_attr *msg)

  if (!check_facility_filter(LOG_FAC(p)))
  return 0;
+
+  if (!check_loglevel_filter(LOG_PRI(p)))
+return 0;

  m = blobmsg_get_string(tb[LOG_MSG]);
  if (regexp_pattern &&
@@ -233,6 +248,8 @@ static int usage(const char *prog)
"-p PID file\n"
"-h   Add hostname to the message\n"
"-P   Prefix custom text to streamed messages\n"
+   "-v  handle only messages with given log level
(0-7), repeatable\n"
+   "-V  ignore messages with given log level (0-7),
repeatable\n"
"-z   handle only messages with given facility
(0-23), repeatable\n"
"-Z   ignore messages with given facility (0-23),
repeatable\n"
"-f Follow log messages\n"
@@ -313,7 +330,7 @@ int main(int argc, char **argv)

  signal(SIGPIPE, SIG_IGN);

- while ((ch = getopt(argc, argv, "u0fcs:l:z:Z:r:F:p:S:P:h:e:t")) != -1) {
+ while ((ch = getopt(argc, argv, "u0fcs:l:v:V:z:Z:r:F:p:S:P:h:e:t")) != -1) {
switch (ch) {
case 'u':
  log_udp = 1;
@@ -343,6 +360,14 @@ int main(int argc, char **argv)
case 'l':
  lines = atoi(optarg);
  break;
+   case 'v':
+ id = strtoul(optarg, NULL, 0) & 0x1f;
+ loglevel_include |= (1 << id);
+ break;
+   case 'V':
+ id = strtoul(optarg, NULL, 0) & 0x1f;
+ loglevel_exclude |= (1 << id);
+ break;
case 'z':
  id = strtoul(optarg, NULL, 0) & 0x1f;
  facility_include |= (1 << id);
-- 
2.30.2

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [PATCH] ubox: logread add option to filter priority (log level)

2023-08-21 Thread Legale Legale
This will print only DEBUG PRIO.

root@AP_44D1FABC0E5C:~# logread -f -v 7
Mon Aug 21 14:48:24 2023 user.debug root: HELLO!!!

On Mon, 24 Jul 2023 at 18:22, Hannu Nyman  wrote:
>
> Paul D kirjoitti 24.7.2023 klo 13.19:
> > For those executing this at the command line, how does one 'repeat'?
> >
> > -v 1 -v 2, or -v1 -v2 or -v123 or -v 1,2,3?
> >
> > I had to think for a bit since it wasn't immediately obvious.
> >
> > Perhaps a hint string with "(repeatable eg -v 1 -v 2)"?
> >
> >
> >
> > On 2023-07-22 14:40, Legale Legale wrote:
> >>  From 071cfc2853dd7a4f9fb59a1650de8d5c874ce4f2 Mon Sep 17 00:00:00 2001
> >> From:
> >> Date: Sat, 22 Jul 2023 01:28:05 +0300
> >> Subject: [PATCH] logread: add option to filter priority (log level)
> >>
> >> This adds an ability to filter log messages priority:
> >>  -v   handle only messages with given log
> >> level (0-7), repeatable
> >>  -V   ignore messages with given log level
> >> (0-7), repeatable
>
>
> I think that a more normal approach would be same as with kernel log:
> defining the minimum seriousness (max level), and printing the items more
> serious than that.
>
> https://www.kernel.org/doc/html/next/core-api/printk-basics.html
>
>  > The log level specifies the importance of a message. The kernel decides
> whether to show the message immediately (printing it to the current console)
> depending on its log level and the current console_loglevel (a kernel
> variable). If the message priority is higher (lower log level value) than the
> console_loglevel the message will be printed to the console.
>
> Simiilar approach of "show log items at least as serious as X" (=loglevel
> 0-X) would look more natural to me.
>
> There might be also filtering by individual level (with repeatable options),
> but the use case is not that obvious.
>
>
>
> ___
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [PATCH] ubox: logread add option to filter priority (log level)

2023-07-24 Thread Hannu Nyman

Paul D kirjoitti 24.7.2023 klo 13.19:

For those executing this at the command line, how does one 'repeat'?

-v 1 -v 2, or -v1 -v2 or -v123 or -v 1,2,3?

I had to think for a bit since it wasn't immediately obvious.

Perhaps a hint string with "(repeatable eg -v 1 -v 2)"?



On 2023-07-22 14:40, Legale Legale wrote:

 From 071cfc2853dd7a4f9fb59a1650de8d5c874ce4f2 Mon Sep 17 00:00:00 2001
From:
Date: Sat, 22 Jul 2023 01:28:05 +0300
Subject: [PATCH] logread: add option to filter priority (log level)

This adds an ability to filter log messages priority:
 -v   handle only messages with given log
level (0-7), repeatable
 -V   ignore messages with given log level
(0-7), repeatable



I think that a more normal approach would be same as with kernel log:
defining the minimum seriousness (max level), and printing the items more 
serious than that.


https://www.kernel.org/doc/html/next/core-api/printk-basics.html

> The log level specifies the importance of a message. The kernel decides 
whether to show the message immediately (printing it to the current console) 
depending on its log level and the current console_loglevel (a kernel 
variable). If the message priority is higher (lower log level value) than the 
console_loglevel the message will be printed to the console.


Simiilar approach of "show log items at least as serious as X" (=loglevel 
0-X) would look more natural to me.


There might be also filtering by individual level (with repeatable options), 
but the use case is not that obvious.




___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [PATCH] ubox: logread add option to filter priority (log level)

2023-07-24 Thread Paul D

For those executing this at the command line, how does one 'repeat'?

-v 1 -v 2, or -v1 -v2 or -v123 or -v 1,2,3?

I had to think for a bit since it wasn't immediately obvious.

Perhaps a hint string with "(repeatable eg -v 1 -v 2)"?



On 2023-07-22 14:40, Legale Legale wrote:

 From 071cfc2853dd7a4f9fb59a1650de8d5c874ce4f2 Mon Sep 17 00:00:00 2001
From:
Date: Sat, 22 Jul 2023 01:28:05 +0300
Subject: [PATCH] logread: add option to filter priority (log level)

This adds an ability to filter log messages priority:
 -v   handle only messages with given log
level (0-7), repeatable
 -V   ignore messages with given log level
(0-7), repeatable

Signed-off-by: Isaev Ruslan 
---
  log/logread.c | 27 ++-
  1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/log/logread.c b/log/logread.c
index f48dd4b..91aae00 100644
--- a/log/logread.c
+++ b/log/logread.c
@@ -66,6 +66,8 @@ static int log_type = LOG_STDOUT;
  static int log_size, log_udp, log_follow, log_trailer_null = 0;
  static int log_timestamp;
  static int logd_conn_tries = LOGD_CONNECT_RETRY;
+static int loglevel_include;
+static int loglevel_exclude;
  static int facility_include;
  static int facility_exclude;

@@ -79,6 +81,16 @@ static int check_facility_filter(int f)
 return 1;
  }

+/* check for loglevel filter; return 0 if message shall be dropped */
+static int check_loglevel_filter(int f)
+{
+   if (loglevel_include)
+   return !!(loglevel_include & (1 << f));
+   if (loglevel_exclude)
+   return !(loglevel_exclude & (1 << f));
+   return 1;
+}
+
  static const char* getcodetext(int value, CODE *codetable) {
 CODE *i;

@@ -155,6 +167,9 @@ static int log_notify(struct blob_attr *msg)

 if (!check_facility_filter(LOG_FAC(p)))
 return 0;
+
+  if (!check_loglevel_filter(LOG_PRI(p)))
+return 0;

 m = blobmsg_get_string(tb[LOG_MSG]);
 if (regexp_pattern &&
@@ -233,6 +248,8 @@ static int usage(const char *prog)
 "-p   PID file\n"
 "-h   Add hostname to the message\n"
 "-P Prefix custom text to streamed
messages\n"
+   "-v  handle only messages with
given log level (0-7), repeatable\n"
+   "-V  ignore messages with given log
level (0-7), repeatable\n"
 "-z   handle only messages with
given facility (0-23), repeatable\n"
 "-Z   ignore messages with given
facility (0-23), repeatable\n"
 "-f Follow log messages\n"
@@ -313,7 +330,7 @@ int main(int argc, char **argv)

 signal(SIGPIPE, SIG_IGN);

-   while ((ch = getopt(argc, argv, "u0fcs:l:z:Z:r:F:p:S:P:h:e:t")) != -1) {
+   while ((ch = getopt(argc, argv,
"u0fcs:l:v:V:z:Z:r:F:p:S:P:h:e:t")) != -1) {
 switch (ch) {
 case 'u':
 log_udp = 1;
@@ -343,6 +360,14 @@ int main(int argc, char **argv)
 case 'l':
 lines = atoi(optarg);
 break;
+   case 'v':
+   id = strtoul(optarg, NULL, 0) & 0x1f;
+   loglevel_include |= (1 << id);
+   break;
+   case 'V':
+   id = strtoul(optarg, NULL, 0) & 0x1f;
+   loglevel_exclude |= (1 << id);
+   break;
 case 'z':
 id = strtoul(optarg, NULL, 0) & 0x1f;
 facility_include |= (1 << id);



___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[PATCH] ubox: logread add option to filter priority (log level)

2023-07-22 Thread Legale Legale
This adds an ability to filter log messages priority:
-v   handle only messages with given log
level (0-7), repeatable
-V   ignore messages with given log level
(0-7), repeatable

Signed-off-by: Isaev Ruslan 
---
 log/logread.c | 27 ++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/log/logread.c b/log/logread.c
index f48dd4b..91aae00 100644
--- a/log/logread.c
+++ b/log/logread.c
@@ -66,6 +66,8 @@ static int log_type = LOG_STDOUT;
 static int log_size, log_udp, log_follow, log_trailer_null = 0;
 static int log_timestamp;
 static int logd_conn_tries = LOGD_CONNECT_RETRY;
+static int loglevel_include;
+static int loglevel_exclude;
 static int facility_include;
 static int facility_exclude;

@@ -79,6 +81,16 @@ static int check_facility_filter(int f)
return 1;
 }

+/* check for loglevel filter; return 0 if message shall be dropped */
+static int check_loglevel_filter(int f)
+{
+   if (loglevel_include)
+   return !!(loglevel_include & (1 << f));
+   if (loglevel_exclude)
+   return !(loglevel_exclude & (1 << f));
+   return 1;
+}
+
 static const char* getcodetext(int value, CODE *codetable) {
CODE *i;

@@ -155,6 +167,9 @@ static int log_notify(struct blob_attr *msg)

if (!check_facility_filter(LOG_FAC(p)))
return 0;
+
+  if (!check_loglevel_filter(LOG_PRI(p)))
+return 0;

m = blobmsg_get_string(tb[LOG_MSG]);
if (regexp_pattern &&
@@ -233,6 +248,8 @@ static int usage(const char *prog)
"-p   PID file\n"
"-h   Add hostname to the message\n"
"-P Prefix custom text to streamed
messages\n"
+   "-v  handle only messages with
given log level (0-7), repeatable\n"
+   "-V  ignore messages with given log
level (0-7), repeatable\n"
"-z   handle only messages with
given facility (0-23), repeatable\n"
"-Z   ignore messages with given
facility (0-23), repeatable\n"
"-f Follow log messages\n"
@@ -313,7 +330,7 @@ int main(int argc, char **argv)

signal(SIGPIPE, SIG_IGN);

-   while ((ch = getopt(argc, argv, "u0fcs:l:z:Z:r:F:p:S:P:h:e:t")) != -1) {
+   while ((ch = getopt(argc, argv,
"u0fcs:l:v:V:z:Z:r:F:p:S:P:h:e:t")) != -1) {
switch (ch) {
case 'u':
log_udp = 1;
@@ -343,6 +360,14 @@ int main(int argc, char **argv)
case 'l':
lines = atoi(optarg);
break;
+   case 'v':
+   id = strtoul(optarg, NULL, 0) & 0x1f;
+   loglevel_include |= (1 << id);
+   break;
+   case 'V':
+   id = strtoul(optarg, NULL, 0) & 0x1f;
+   loglevel_exclude |= (1 << id);
+   break;
case 'z':
id = strtoul(optarg, NULL, 0) & 0x1f;
facility_include |= (1 << id);
--
2.30.2

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[PATCH] ubox: logread add option to filter priority (log level)

2023-07-22 Thread Legale Legale
>From 071cfc2853dd7a4f9fb59a1650de8d5c874ce4f2 Mon Sep 17 00:00:00 2001
From:
Date: Sat, 22 Jul 2023 01:28:05 +0300
Subject: [PATCH] logread: add option to filter priority (log level)

This adds an ability to filter log messages priority:
-v   handle only messages with given log
level (0-7), repeatable
-V   ignore messages with given log level
(0-7), repeatable

Signed-off-by: Isaev Ruslan 
---
 log/logread.c | 27 ++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/log/logread.c b/log/logread.c
index f48dd4b..91aae00 100644
--- a/log/logread.c
+++ b/log/logread.c
@@ -66,6 +66,8 @@ static int log_type = LOG_STDOUT;
 static int log_size, log_udp, log_follow, log_trailer_null = 0;
 static int log_timestamp;
 static int logd_conn_tries = LOGD_CONNECT_RETRY;
+static int loglevel_include;
+static int loglevel_exclude;
 static int facility_include;
 static int facility_exclude;

@@ -79,6 +81,16 @@ static int check_facility_filter(int f)
return 1;
 }

+/* check for loglevel filter; return 0 if message shall be dropped */
+static int check_loglevel_filter(int f)
+{
+   if (loglevel_include)
+   return !!(loglevel_include & (1 << f));
+   if (loglevel_exclude)
+   return !(loglevel_exclude & (1 << f));
+   return 1;
+}
+
 static const char* getcodetext(int value, CODE *codetable) {
CODE *i;

@@ -155,6 +167,9 @@ static int log_notify(struct blob_attr *msg)

if (!check_facility_filter(LOG_FAC(p)))
return 0;
+
+  if (!check_loglevel_filter(LOG_PRI(p)))
+return 0;

m = blobmsg_get_string(tb[LOG_MSG]);
if (regexp_pattern &&
@@ -233,6 +248,8 @@ static int usage(const char *prog)
"-p   PID file\n"
"-h   Add hostname to the message\n"
"-P Prefix custom text to streamed
messages\n"
+   "-v  handle only messages with
given log level (0-7), repeatable\n"
+   "-V  ignore messages with given log
level (0-7), repeatable\n"
"-z   handle only messages with
given facility (0-23), repeatable\n"
"-Z   ignore messages with given
facility (0-23), repeatable\n"
"-f Follow log messages\n"
@@ -313,7 +330,7 @@ int main(int argc, char **argv)

signal(SIGPIPE, SIG_IGN);

-   while ((ch = getopt(argc, argv, "u0fcs:l:z:Z:r:F:p:S:P:h:e:t")) != -1) {
+   while ((ch = getopt(argc, argv,
"u0fcs:l:v:V:z:Z:r:F:p:S:P:h:e:t")) != -1) {
switch (ch) {
case 'u':
log_udp = 1;
@@ -343,6 +360,14 @@ int main(int argc, char **argv)
case 'l':
lines = atoi(optarg);
break;
+   case 'v':
+   id = strtoul(optarg, NULL, 0) & 0x1f;
+   loglevel_include |= (1 << id);
+   break;
+   case 'V':
+   id = strtoul(optarg, NULL, 0) & 0x1f;
+   loglevel_exclude |= (1 << id);
+   break;
case 'z':
id = strtoul(optarg, NULL, 0) & 0x1f;
facility_include |= (1 << id);
-- 
2.30.2

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel