Added per-module runtime log level configuration
This commit is contained in:
parent
2847a05e0a
commit
8966460b1f
@ -248,6 +248,19 @@ PT_THREAD(cmd_rpl_set_root(struct pt *pt, shell_output_func output, char *args))
|
||||
PT_END(pt);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
shell_output_log_levels(shell_output_func output)
|
||||
{
|
||||
int i = 0;
|
||||
SHELL_OUTPUT(output, "Log levels:\n");
|
||||
while(all_modules[i].name != NULL) {
|
||||
SHELL_OUTPUT(output, "-- %-10s: %s\n",
|
||||
all_modules[i].name,
|
||||
log_level_to_str(*all_modules[i].curr_log_level));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(cmd_log(struct pt *pt, shell_output_func output, char *args))
|
||||
{
|
||||
@ -255,12 +268,23 @@ PT_THREAD(cmd_log(struct pt *pt, shell_output_func output, char *args))
|
||||
static int level;
|
||||
char *next_args;
|
||||
char *ptr;
|
||||
char *module;
|
||||
|
||||
PT_BEGIN(pt);
|
||||
|
||||
SHELL_ARGS_INIT(args, next_args);
|
||||
|
||||
/* Get and parse argument */
|
||||
/* Get and parse argument: module name */
|
||||
SHELL_ARGS_NEXT(args, next_args);
|
||||
module = args;
|
||||
prev_level = log_get_level(module);
|
||||
if(module == NULL || (strcmp("all", module) && prev_level == -1)) {
|
||||
SHELL_OUTPUT(output, "Invalid first argument: %s\n", module)
|
||||
shell_output_log_levels(output);
|
||||
PT_EXIT(pt);
|
||||
}
|
||||
|
||||
/* Get and parse argument: log level */
|
||||
SHELL_ARGS_NEXT(args, next_args);
|
||||
if(args == NULL) {
|
||||
level = -1;
|
||||
@ -269,23 +293,25 @@ PT_THREAD(cmd_log(struct pt *pt, shell_output_func output, char *args))
|
||||
}
|
||||
if((level == 0 && args == ptr)
|
||||
|| level < LOG_LEVEL_NONE || level > LOG_LEVEL_DBG) {
|
||||
SHELL_OUTPUT(output, "Invalid argument: %s\n", args);
|
||||
SHELL_OUTPUT(output, "Invalid second argument: %s\n", args);
|
||||
PT_EXIT(pt);
|
||||
}
|
||||
|
||||
/* Set log level */
|
||||
prev_level = log_get_level();
|
||||
if(level != prev_level) {
|
||||
log_set_level(level);
|
||||
if(level >= LOG_LEVEL_DBG) {
|
||||
tsch_log_init();
|
||||
SHELL_OUTPUT(output, "TSCH logging started\n");
|
||||
} else {
|
||||
tsch_log_stop();
|
||||
SHELL_OUTPUT(output, "TSCH logging stopped\n");
|
||||
log_set_level(module, level);
|
||||
if(!strcmp(module, "mac") || !strcmp(module, "all")) {
|
||||
if(level >= LOG_LEVEL_DBG) {
|
||||
tsch_log_init();
|
||||
SHELL_OUTPUT(output, "TSCH logging started\n");
|
||||
} else {
|
||||
tsch_log_stop();
|
||||
SHELL_OUTPUT(output, "TSCH logging stopped\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
SHELL_OUTPUT(output, "Log level set to %u (%s)\n", level, log_level_to_str(level));
|
||||
|
||||
shell_output_log_levels(output);
|
||||
|
||||
PT_END(pt);
|
||||
}
|
||||
@ -583,9 +609,9 @@ shell_commands_init(void)
|
||||
/*---------------------------------------------------------------------------*/
|
||||
struct shell_command_t shell_commands[] = {
|
||||
{ "help", cmd_help, "'> help': Shows this help" },
|
||||
{ "ip-addr", cmd_ipaddr, "'> ip-addr': Shows all IPv6 addresses" },
|
||||
{ "ip-nbr", cmd_ip_neighbors, "'> ip-nbr': Shows all IPv6 neighbors" },
|
||||
{ "log", cmd_log, "'> log level': Sets log level (0--4). Level 4 also enables TSCH per-slot logging." },
|
||||
{ "ip-addr", cmd_ipaddr, "'> ip-addr': Shows all IPv6 addresses" },
|
||||
{ "ip-nbr", cmd_ip_neighbors, "'> ip-nbr': Shows all IPv6 neighbors" },
|
||||
{ "log", cmd_log, "'> log module level': Sets log level (0--4) for a given module (or \"all\"). For module \"mac\", level 4 also enables per-slot logging." },
|
||||
{ "ping", cmd_ping, "'> ping addr': Pings the IPv6 address 'addr'" },
|
||||
{ "rpl-set-root", cmd_rpl_set_root, "'> rpl-set-root 0/1 [prefix]': Sets node as root (on) or not (off). A /64 prefix can be optionally specified." },
|
||||
{ "rpl-status", cmd_rpl_status, "'> rpl-status': Shows a summary of the current RPL state" },
|
||||
|
@ -58,7 +58,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "TCP/IP"
|
||||
#define LOG_LEVEL TCPIP_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_TCPIP
|
||||
|
||||
#define UIP_ICMP_BUF ((struct uip_icmp_hdr *)&uip_buf[UIP_LLIPH_LEN + uip_ext_len])
|
||||
#define UIP_IP_BUF ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])
|
||||
|
@ -81,7 +81,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "6LoWPAN"
|
||||
#define LOG_LEVEL SICSLOWPAN_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_6LOWPAN
|
||||
|
||||
#ifdef SICSLOWPAN_CONF_COMPRESSION
|
||||
#define SICSLOWPAN_COMPRESSION SICSLOWPAN_CONF_COMPRESSION
|
||||
|
@ -55,7 +55,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "IPv6 Nbr"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
#ifdef UIP_CONF_DS6_NEIGHBOR_STATE_CHANGED
|
||||
#define NEIGHBOR_STATE_CHANGED(n) UIP_CONF_DS6_NEIGHBOR_STATE_CHANGED(n)
|
||||
|
@ -49,7 +49,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "IPv6 Route"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
/* A configurable function called after adding a new neighbor as next hop */
|
||||
#ifdef NETSTACK_CONF_ROUTING_NEIGHBOR_ADDED_CALLBACK
|
||||
|
@ -54,7 +54,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "IPv6 DS"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
struct etimer uip_ds6_timer_periodic; /**< Timer for maintenance of data structures */
|
||||
|
||||
|
@ -50,7 +50,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "ICMPv6"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
#define UIP_IP_BUF ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])
|
||||
#define UIP_ICMP_BUF ((struct uip_icmp_hdr *)&uip_buf[uip_l2_l3_hdr_len])
|
||||
|
@ -78,7 +78,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "IPv6 NDP"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
/** @{ */
|
||||
|
@ -96,7 +96,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "IPv6"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
|
@ -41,7 +41,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "Websocket"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
enum {
|
||||
STATE_WAITING_FOR_HEADER,
|
||||
|
@ -40,7 +40,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "Websocket"
|
||||
#define LOG_LEVEL IPV6_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_IPV6
|
||||
|
||||
PROCESS(websocket_process, "Websockets process");
|
||||
|
||||
|
@ -58,7 +58,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "CSMA"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/* Constants of the IEEE 802.15.4 standard */
|
||||
|
||||
|
@ -47,7 +47,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "CSMA"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
|
@ -43,7 +43,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "Frame 15.4"
|
||||
#define LOG_LEVEL FRAMER_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_FRAMER
|
||||
|
||||
/* c.f. IEEE 802.15.4e Table 4b */
|
||||
enum ieee802154e_header_ie_id {
|
||||
|
@ -46,7 +46,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "Frame 15.4"
|
||||
#define LOG_LEVEL FRAMER_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_FRAMER
|
||||
|
||||
/** \brief The sequence number (0x00 - 0xff) added to the transmitted
|
||||
* data or MAC command frame. The default is a random value within
|
||||
|
@ -35,7 +35,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "MAC"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
|
@ -46,7 +46,7 @@
|
||||
#define TSCH_LOG_PER_SLOT TSCH_LOG_CONF_PER_SLOT
|
||||
#else /* TSCH_LOG_CONF_PER_SLOT */
|
||||
#include "sys/log.h"
|
||||
#define TSCH_LOG_PER_SLOT (MAC_LOG_LEVEL >= LOG_LEVEL_DBG)
|
||||
#define TSCH_LOG_PER_SLOT (LOG_LEVEL_MAC >= LOG_LEVEL_DBG)
|
||||
#endif /* TSCH_LOG_CONF_PER_SLOT */
|
||||
|
||||
/* The length of the log queue, i.e. maximum number postponed log messages */
|
||||
|
@ -54,7 +54,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "TSCH Pkt"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Construct enhanced ACK packet and return ACK length */
|
||||
|
@ -58,7 +58,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "TSCH Queue"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/* Check if TSCH_QUEUE_NUM_PER_NEIGHBOR is power of two */
|
||||
#if (TSCH_QUEUE_NUM_PER_NEIGHBOR & (TSCH_QUEUE_NUM_PER_NEIGHBOR - 1)) != 0
|
||||
|
@ -54,7 +54,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "TSCH RPL"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* To use, set #define TSCH_CALLBACK_KA_SENT tsch_rpl_callback_ka_sent */
|
||||
|
@ -58,7 +58,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "TSCH Sched"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/* Pre-allocated space for links */
|
||||
MEMB(link_memb, struct tsch_link, TSCH_SCHEDULE_MAX_LINKS);
|
||||
|
@ -69,7 +69,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "TSCH"
|
||||
#define LOG_LEVEL MAC_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_MAC
|
||||
|
||||
/* Use to collect link statistics even on Keep-Alive, even though they were
|
||||
* not sent from an upper layer and don't have a valid packet_sent callback */
|
||||
|
@ -38,7 +38,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
#define RPL_DAG_GRACE_PERIOD (CLOCK_SECOND * 20 * 1)
|
||||
|
||||
|
@ -51,7 +51,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
extern rpl_of_t rpl_of0, rpl_mrhof;
|
||||
|
@ -51,7 +51,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#define UIP_IP_BUF ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])
|
||||
|
@ -56,7 +56,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#define RPL_DIO_GROUNDED 0x80
|
||||
|
@ -54,7 +54,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/* RFC6551 and RFC6719 do not mandate the use of a specific formula to
|
||||
* compute the ETX value. This MRHOF implementation relies on the value
|
||||
|
@ -50,7 +50,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/*
|
||||
* Policy for neighbor addition
|
||||
|
@ -51,7 +51,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/* A configurable function called after every RPL parent switch */
|
||||
#ifdef RPL_CALLBACK_PARENT_SWITCH
|
||||
|
@ -44,7 +44,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/* Total number of nodes */
|
||||
static int num_nodes;
|
||||
|
@ -50,7 +50,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/* Constants from RFC6552. We use the default values. */
|
||||
#define RANK_STRETCH 0 /* Must be in the range [0;5] */
|
||||
|
@ -51,7 +51,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
/* A configurable function called after update of the RPL DIO interval */
|
||||
#ifdef RPL_CALLBACK_NEW_DIO_INTERVAL
|
||||
|
@ -48,7 +48,7 @@
|
||||
/* Log configuration */
|
||||
#include "sys/log.h"
|
||||
#define LOG_MODULE "RPL"
|
||||
#define LOG_LEVEL RPL_LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_RPL
|
||||
|
||||
uip_ipaddr_t rpl_multicast_addr;
|
||||
|
||||
|
@ -78,29 +78,29 @@
|
||||
/********************* A list of currently supported modules ******************/
|
||||
/******************************************************************************/
|
||||
|
||||
#ifndef RPL_LOG_LEVEL
|
||||
#define RPL_LOG_LEVEL LOG_LEVEL_NONE /* Only for rpl-lite */
|
||||
#endif /* RPL_LOG_LEVEL */
|
||||
#ifndef LOG_CONF_LEVEL_RPL
|
||||
#define LOG_CONF_LEVEL_RPL LOG_LEVEL_NONE /* Only for rpl-lite */
|
||||
#endif /* LOG_CONF_LEVEL_RPL */
|
||||
|
||||
#ifndef TCPIP_LOG_LEVEL
|
||||
#define TCPIP_LOG_LEVEL LOG_LEVEL_NONE
|
||||
#endif /* TCPIP_LOG_LEVEL */
|
||||
#ifndef LOG_CONF_LEVEL_TCPIP
|
||||
#define LOG_CONF_LEVEL_TCPIP LOG_LEVEL_NONE
|
||||
#endif /* LOG_CONF_LEVEL_TCPIP */
|
||||
|
||||
#ifndef IPV6_LOG_LEVEL
|
||||
#define IPV6_LOG_LEVEL LOG_LEVEL_NONE
|
||||
#endif /* IPV6_LOG_LEVEL */
|
||||
#ifndef LOG_CONF_LEVEL_IPV6
|
||||
#define LOG_CONF_LEVEL_IPV6 LOG_LEVEL_NONE
|
||||
#endif /* LOG_CONF_LEVEL_IPV6 */
|
||||
|
||||
#ifndef SICSLOWPAN_LOG_LEVEL
|
||||
#define SICSLOWPAN_LOG_LEVEL LOG_LEVEL_NONE
|
||||
#endif /* SICSLOWPAN_LOG_LEVEL */
|
||||
#ifndef LOG_CONF_LEVEL_6LOWPAN
|
||||
#define LOG_CONF_LEVEL_6LOWPAN LOG_LEVEL_NONE
|
||||
#endif /* LOG_CONF_LEVEL_6LOWPAN */
|
||||
|
||||
#ifndef MAC_LOG_LEVEL
|
||||
#define MAC_LOG_LEVEL LOG_LEVEL_NONE
|
||||
#endif /* MAC_LOG_LEVELL */
|
||||
#ifndef LOG_CONF_LEVEL_MAC
|
||||
#define LOG_CONF_LEVEL_MAC LOG_LEVEL_NONE
|
||||
#endif /* LOG_CONF_LEVEL_MAC */
|
||||
|
||||
#ifndef FRAMER_LOG_LEVEL
|
||||
#define FRAMER_LOG_LEVEL LOG_LEVEL_NONE
|
||||
#endif /* FRAMER_LOG_LEVEL */
|
||||
#ifndef LOG_CONF_LEVEL_FRAMER
|
||||
#define LOG_CONF_LEVEL_FRAMER LOG_LEVEL_NONE
|
||||
#endif /* LOG_CONF_LEVEL_FRAMER */
|
||||
|
||||
#endif /* __LOG_CONF_H__ */
|
||||
|
||||
|
@ -53,7 +53,23 @@
|
||||
#include "sys/log.h"
|
||||
#include "net/ip/ip64-addr.h"
|
||||
|
||||
int curr_log_level = LOG_LEVEL_DBG;
|
||||
|
||||
int curr_log_level_rpl = LOG_CONF_LEVEL_RPL;
|
||||
int curr_log_level_tcpip = LOG_CONF_LEVEL_TCPIP;
|
||||
int curr_log_level_ipv6 = LOG_CONF_LEVEL_IPV6;
|
||||
int curr_log_level_6lowpan = LOG_CONF_LEVEL_6LOWPAN;
|
||||
int curr_log_level_mac = LOG_CONF_LEVEL_MAC;
|
||||
int curr_log_level_framer = LOG_CONF_LEVEL_FRAMER;
|
||||
|
||||
struct log_module all_modules[] = {
|
||||
{"rpl", &curr_log_level_rpl, LOG_CONF_LEVEL_RPL},
|
||||
{"tcpip", &curr_log_level_tcpip, LOG_CONF_LEVEL_TCPIP},
|
||||
{"ipv6", &curr_log_level_ipv6, LOG_CONF_LEVEL_IPV6},
|
||||
{"6lowpan", &curr_log_level_6lowpan, LOG_CONF_LEVEL_6LOWPAN},
|
||||
{"mac", &curr_log_level_mac, LOG_CONF_LEVEL_MAC},
|
||||
{"framer", &curr_log_level_framer, LOG_CONF_LEVEL_FRAMER},
|
||||
{NULL, NULL, 0},
|
||||
};
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
@ -135,17 +151,31 @@ log_lladdr_compact(const linkaddr_t *lladdr)
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
log_set_level(int level)
|
||||
log_set_level(const char *module, int level)
|
||||
{
|
||||
if(level >= LOG_LEVEL_NONE && level <= LOG_LEVEL_DBG) {
|
||||
curr_log_level = level;
|
||||
int i = 0;
|
||||
int module_all = !strcmp("all", module);
|
||||
while(all_modules[i].name != NULL) {
|
||||
if(module_all || !strcmp(module, all_modules[i].name)) {
|
||||
*all_modules[i].curr_log_level = MIN(level, all_modules[i].max_log_level);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
log_get_level(void)
|
||||
log_get_level(const char *module)
|
||||
{
|
||||
return curr_log_level;
|
||||
int i = 0;
|
||||
while(all_modules[i].name != NULL) {
|
||||
if(!strcmp(module, all_modules[i].name)) {
|
||||
return *all_modules[i].curr_log_level;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
const char *
|
||||
|
@ -65,10 +65,34 @@
|
||||
#define LOG_LEVEL_INFO 3 /* Basic info */
|
||||
#define LOG_LEVEL_DBG 4 /* Detailled debug */
|
||||
|
||||
/* Per-module log level */
|
||||
|
||||
struct log_module {
|
||||
const char *name;
|
||||
int *curr_log_level;
|
||||
int max_log_level;
|
||||
};
|
||||
|
||||
extern int curr_log_level_rpl;
|
||||
extern int curr_log_level_tcpip;
|
||||
extern int curr_log_level_ipv6;
|
||||
extern int curr_log_level_6lowpan;
|
||||
extern int curr_log_level_mac;
|
||||
extern int curr_log_level_framer;
|
||||
|
||||
extern struct log_module all_modules[];
|
||||
|
||||
#define LOG_LEVEL_RPL MIN((LOG_CONF_LEVEL_RPL), curr_log_level_rpl)
|
||||
#define LOG_LEVEL_TCPIP MIN((LOG_CONF_LEVEL_TCPIP), curr_log_level_tcpip)
|
||||
#define LOG_LEVEL_IPV6 MIN((LOG_CONF_LEVEL_IPV6), curr_log_level_ipv6)
|
||||
#define LOG_LEVEL_6LOWPAN MIN((LOG_CONF_LEVEL_6LOWPAN), curr_log_level_6lowpan)
|
||||
#define LOG_LEVEL_MAC MIN((LOG_CONF_LEVEL_MAC), curr_log_level_mac)
|
||||
#define LOG_LEVEL_FRAMER MIN((LOG_CONF_LEVEL_FRAMER), curr_log_level_framer)
|
||||
|
||||
/* Main log function */
|
||||
|
||||
#define LOG(newline, level, levelstr, ...) do { \
|
||||
if(level <= MIN(LOG_LEVEL, curr_log_level)) { \
|
||||
if(level <= (LOG_LEVEL)) { \
|
||||
if(newline) { \
|
||||
LOG_OUTPUT("[%-4s: %-10s] ", levelstr, LOG_MODULE); \
|
||||
if(LOG_WITH_LOC) { \
|
||||
@ -88,7 +112,7 @@
|
||||
|
||||
/* Link-layer address */
|
||||
#define LOG_LLADDR(level, lladdr) do { \
|
||||
if(level <= MIN(LOG_LEVEL, curr_log_level)) { \
|
||||
if(level <= (LOG_LEVEL)) { \
|
||||
if(LOG_WITH_COMPACT_ADDR) { \
|
||||
log_lladdr_compact(lladdr); \
|
||||
} else { \
|
||||
@ -99,7 +123,7 @@
|
||||
|
||||
/* IPv6 address */
|
||||
#define LOG_6ADDR(level, ipaddr) do { \
|
||||
if(level <= MIN(LOG_LEVEL, curr_log_level)) { \
|
||||
if(level <= (LOG_LEVEL)) { \
|
||||
if(LOG_WITH_COMPACT_ADDR) { \
|
||||
log_6addr_compact(ipaddr); \
|
||||
} else { \
|
||||
@ -135,9 +159,6 @@
|
||||
#define LOG_INFO_ENABLED (MIN(LOG_LEVEL, curr_log_level) >= LOG_LEVEL_INFO)
|
||||
#define LOG_DBG_ENABLED (MIN(LOG_LEVEL, curr_log_level) >= LOG_LEVEL_DBG)
|
||||
|
||||
/* The current log level */
|
||||
extern int curr_log_level;
|
||||
|
||||
#if NETSTACK_CONF_WITH_IPV6
|
||||
|
||||
/**
|
||||
@ -170,15 +191,17 @@ void log_lladdr_compact(const linkaddr_t *lladdr);
|
||||
* Sets a log level at run-time. Logs are included in the firmware via
|
||||
* the compile-time flags in log-conf.h, but this allows to force lower log
|
||||
* levels, system-wide.
|
||||
* \param module The target module string descriptor
|
||||
* \param level The log level
|
||||
*/
|
||||
void log_set_level(int level);
|
||||
void log_set_level(const char *module, int level);
|
||||
|
||||
/**
|
||||
* Returns the current log level.
|
||||
* \param module The target module string descriptor
|
||||
* \return The current log level
|
||||
*/
|
||||
int log_get_level(void);
|
||||
int log_get_level(const char *module);
|
||||
|
||||
/**
|
||||
* Returns a textual description of a log level
|
||||
|
@ -72,7 +72,7 @@ PROCESS_THREAD(node_process, ev, data)
|
||||
|
||||
#if WITH_SHELL
|
||||
serial_shell_init();
|
||||
log_set_level(LOG_LEVEL_WARN);
|
||||
log_set_level("all", LOG_LEVEL_WARN);
|
||||
tsch_log_stop();
|
||||
#endif /* WITH_SHELL */
|
||||
|
||||
|
@ -157,12 +157,12 @@
|
||||
#endif /* CONTIKI_TARGET_COOJA */
|
||||
|
||||
/* Logging */
|
||||
#define RPL_LOG_LEVEL LOG_LEVEL_INFO
|
||||
#define TCPIP_LOG_LEVEL LOG_LEVEL_WARN
|
||||
#define IPV6_LOG_LEVEL LOG_LEVEL_WARN
|
||||
#define SICSLOWPAN_LOG_LEVEL LOG_LEVEL_WARN
|
||||
#define MAC_LOG_LEVEL LOG_LEVEL_INFO
|
||||
#define FRAMER_LOG_LEVEL LOG_LEVEL_WARN
|
||||
#define TSCH_LOG_CONF_PER_SLOT 1
|
||||
#define LOG_CONF_LEVEL_RPL LOG_LEVEL_INFO
|
||||
#define LOG_CONF_LEVEL_TCPIP LOG_LEVEL_WARN
|
||||
#define LOG_CONF_LEVEL_IPV6 LOG_LEVEL_WARN
|
||||
#define LOG_CONF_LEVEL_6LOWPAN LOG_LEVEL_WARN
|
||||
#define LOG_CONF_LEVEL_MAC LOG_LEVEL_INFO
|
||||
#define LOG_CONF_LEVEL_FRAMER LOG_LEVEL_DBG
|
||||
#define TSCH_LOG_CONF_PER_SLOT 1
|
||||
|
||||
#endif /* __PROJECT_CONF_H__ */
|
||||
|
@ -39,11 +39,12 @@
|
||||
* LOG_LEVEL_INFO Basic info
|
||||
* LOG_LEVEL_DBG Detailled debug
|
||||
*/
|
||||
#define IPV6_LOG_LEVEL LOG_LEVEL_DBG
|
||||
#define SICSLOWPAN_LOG_LEVEL LOG_LEVEL_DBG
|
||||
#define TCPIP_LOG_LEVEL LOG_LEVEL_DBG
|
||||
#define MAC_LOG_LEVEL LOG_LEVEL_DBG
|
||||
#define FRAMER_LOG_LEVEL LOG_LEVEL_DBG
|
||||
#define LOG_CONF_LEVEL_IPV6 LOG_LEVEL_DBG
|
||||
#define LOG_CONF_LEVEL_RPL LOG_LEVEL_DBG
|
||||
#define LOG_CONF_LEVEL_6LOWPAN LOG_LEVEL_DBG
|
||||
#define LOG_CONF_LEVEL_TCPIP LOG_LEVEL_DBG
|
||||
#define LOG_CONF_LEVEL_MAC LOG_LEVEL_DBG
|
||||
#define LOG_CONF_LEVEL_FRAMER LOG_LEVEL_DBG
|
||||
|
||||
/* Enable cooja annotations */
|
||||
#define LOG_CONF_WITH_ANNOTATE 1
|
||||
|
Loading…
Reference in New Issue
Block a user