Logging

Reference Documentation

product_line_custom
Napatech SmartNIC
category
Reference Information

Logging Methods

The driver runs partly in kernel mode and partly in user mode. The kernel mode part uses one way to log messages and the user mode part uses another way to log messages. Logging is done in five different ways:
Note:

The log read tool ntlog can only be used when ntservice is loaded.

Kernel Mode Part
  1. Log buffer All messages are logged to the kernel mode log buffer and can be read using the ntlog tool.
    Note:

    This is not the same log buffer as the user mode log buffer.

  2. DMESG (Linux/FreeBSD only) All messages are logged to the kernel log and can read using dmesg.

User Mode Part
  1. Log buffer All messages are logged to the user mode log buffer and can be read using the ntlog tool.
    Note:

    This is not the same log buffer as the kernel mode log buffer.

  2. File log Log messages can be written to a file. This must be enabled in the ntservice.ini file. The file log does not contain the kernel mode log messages and the initial startup log messages.

  3. Syslog (Linux/FreeBSD) - Event log (Windows) Error, warning and information log messages are written to the syslog and can be read from here. How to read the syslog depends of the platform and setup for the OS.
    Note:

    Logging to the syslog/Event log can be turned off in the ini-file.

    Log Comparison

    Method

    Context

    Read

    Content

    Persistent

    Can be Disabled

    DMESG (Linux/FreeBSD)

    Kernel mode

    dmesg

    Kernel mode messages together with other OS messages

    Yes

    No

    Kernel mode log buffer

    Kernel mode

    ntlog tool

    Both kernel mode messages and user mode messages are listed when using the ntlog tool

    No - disappears when the driver is unloaded

    No

    User mode log buffer

    User mode

    ntlog tool

    Both kernel mode messages and user mode messages are listed when using the ntlog tool

    No - disappears when the service is unloaded

    No

    File

    User mode

    Text editor

    Does not contain kernel mode messages and initial user mode messages

    Yes

    Yes

    Syslog/Event log

    User mode

    System dependent

    Does not contain kernel mode messages. Only contains error, warning and information user mode messages

    Yes

    Yes

    Log Buffer Size

The user mode log buffer is a circular buffer with a size of 4 MBytes. When the amount of log information exceeds the buffer size, the buffer either wraps around or discards further messages. The behavior of the buffer must be set in the ntservice.ini file. File Logging

File logging must be enabled in the ntservice.ini file and does not contain any kernel mode messages or early user mode messages. From the line "<<<<<<<<<< Logging to file "/tmp/test.log" >>>>>>>>>>" in the ntlog, the content of the file log and the output from the ntlog tool (log buffer) are identical.
Note:

NTService does not monitor the size of the log file. The system must make use of an 3rd party logrotate tool to facilitate log truncation.

Note:
To use Linux logrotate(8) tool, use this configuration example: File /etc/logrotate.d/ntservice.conf
/var/log/ntservice.log
{
  missingok
  rotate 20
  notifempty
  copytruncate
}
File your-ntservice-ini-file.ini
 [logging]
 LogToFile = 1
 LogFileName = /var/log/ntservice.log
syslog/Event log Logging

Logging to the system log is enabled from startup. It can be disabled in the ini-file by setting the key LogToSystem. Doing this will stop the system logging after the ini-file has been read. Only Errors, Warinings and Information is logged to the system log.

Log Message Format

There is no strict format for the log messages and the log messages can change or disappear between releases. The log output format is described here: ntlog Initial Setup - ntservice.ini

The logging function is set up in the ntservice.ini file in the [logging] section.

Command

Description

LogMask

Bitmask that specifies the level of log information to record. Corresponds to the -s parameter of the log command.
  • 0x01 : ERROR Cannot be disabled - will always be recorded

  • 0x02 : WARNING Cannot be disabled - will always be recorded

  • 0x04 : INFO Cannot be disabled - will always be recorded

  • 0x08 : DEBUG Records debug information

  • 0x10 : DIAG Records diagnostic information

  • 0x20 : EVENT Records information about events

  • 0x40 : COMMAND Records information about commands

  • 0x80 : API Records information about API calls

LogToFile

Enables logging to file. All log information is saved to a file.
  • 0 Disables log to file

  • 1 Enables log to file
    Note:

    The log file is not wrapped and will grow in size. Enabling the LogToFile will cause the hard disk to be filled with a large log file.

LogFileName

The file name for the log file. If the file name contains a %s, this will be expanded with the current date and time for when the service was started. For example:
  • /tmp/test.log will not be expanded

  • /tmp/test_%s.log will be expanded to /tmp/test_11_10_28_11_23_21.log The %s can be placed anywhere in the file name string.

LogBufferWrap

Sets whether or not the buffer should wrap around when full.
  • wrap Log buffer wraps when full. Oldest messages are overwritten

  • nowrap Log does not wrap. Logging stops when buffer is full and discards all new messages.

LogToSystem

Enable or disable log the system log syslog/Event log
  • 0 Disable system logging

  • 1 Enable system logging

ntservice.ini example

[logging] LogMask=0x0F LogToFile=1 LogToSystem=1 LogFileName=/tmp/test.log LogBufferWrap=wrap Reading the Log After a Crash of ntservice

In most cases the shared memory containing the log will survive after ntservice crashes. The log can be read using the supportinfo tool or the ntlog tool. Restarting the ntservice will delete the log.

In case of a ntservice crash, it is important to run the supportinfo tool immediately after the crash in order to record important information for conveying to the Napatech Support Center. Requirements

For both Linux and FreeBSD it is required that the procfs pseudo-filesystem is mounted under mountpoint /proc For more info see - Linux: "man proc" FreeBSD: "man procfs" If procfs is not mounted under /proc - the ntlog subsystem and the profiling tool will be unable to translate process ids (PIDs) into process names (both tools will still be functional).