This command-line tool starts, stops, or enables trace logging. The
results of event logging can be viewed with either the TraceDmp or
Reducer tools.
TraceLog acts like a Windows Management Instrumentation (WMI)
controller link in that it helps control the various parameters
associated with the logging of event traces.
You can use TraceLog to do the following:
Start, stop, update, and query a trace session.
Set up a buffer in which the event traces are logged by the
provider.
Create a log file to which the buffer is flushed. You can also set
up a real-time mode in which the buffer is delivered directly to the
consumer.
Provide more specific control over system-level tracing.
Control the level of tracing required.
TraceLog first creates a cyclical buffer and enables tracing. The
WMI provider, such as the operating system or an application (the
directory service, for example), starts tracing events. These traces
are written to the buffer. As the buffer is filled, the data is
written to a log file. If real-time mode is set, the consumer (such
as TraceDmp or another application) can take data directly from the
buffer.
TraceLog Display Logger Name Name of the logging instance. For the
kernel, the name is NT Kernel Logger. Otherwise, it defaults to what
you have provided. (See Example 2 in "TraceLog Examples.")
Logger Id ID of the logger.
Logger Thread Id Thread ID of the logger.
Buffer Size The size of the buffer allocation.
Maximum Buffers The maximum buffers in pool.
Minimum Buffers The number of buffers to pre-allocate.
Number of Buffers The number of buffers in use.
Free Buffers The number of buffers in the free list.
Buffers Written The number of buffers that have already been written
to.
Files Required
Tracelog.exe
Control.guid (contains the GUIDs of the providers for which tracing
is possible)
TraceLog Topics
TraceLog Syntax
TraceLog Examples
Overview of Event Tracing
Management options: Starting, stopping, updating, and querying a
trace session
-guid file
starts tracing for providers in the file specified. The file with a
list of GUIDs for event tracing. Each GUID corresponds to a
traceable event. You cannot just provide a GUID, even if it is just
one GUID; it has to be included in a file. To begin system tracing,
no GUID file is necessary (see Example 1 in "TraceLog Examples"). To
enable directory service event tracing, the control.guid file has
been provided with the tool (see Example 2 in "TraceLog Examples").
-start [logger_name]
starts a trace session. You need to give a logger name for the
events to trace. If it is a system trace, you don't need to specify
a logger name, since the default logger name would be taken as "NT
kernel logger" (see Example 1 and Example 2 in "TraceLog Examples").
Note
System and application traces could be started simultaneously, but
you must specify a different logger name for the application trace.
-stop [logger_name]
stops a trace session. You have to specify the instance name of the
events for which you would like tracing to discontinue. For stopping
system tracing, you need not specify any logger name (see Example 4
in "TraceLog Examples").
-update [options] [logger_name]
updates the current trace session. This would be useful when you
would like to change the file name of the log file (maybe directing
it to a different disk) or change some buffer parameters, or change
to real time mode, or some other changes. The following options can
be updated for the kernel logger (system trace): Option Action
-rt Mode switch. To switch to and from real time mode.
-f logfile_name New logfile name to switch logfile.
-ft n Change the flush timer.
-max n Change the maximum number of buffers.
"-nodisk" "-noprocess" "-nothread" "-nonet" "-fio" "-pf" "-hf" "-img"
"-cm" Flags. These flags apply only to the NT kernel logger.
All updates should be provided in a single update statement. For
example, to switch to real-time processing and increase the maximum
number of buffers, type the following at the command line:
tracelog –update –rt –max 40-x
stops all active trace sessions. Stops all system and otherwise
traces. Completes halt to event tracing.
-l
queries to list all the ongoing traces.
-q
queries to list the system trace only.
Buffer options
-b n
sets the buffer size to n kilobytes. Gives the buffer size. You
would generally like the size to be a multiple of the page size (for
Intel architecture-based computers the page size is 4 kilobytes). A
small size increases the flush frequency. The kernel, depending on
the memory capacity, chooses the default.
-min n
sets minimum buffers. This is the number of buffers to pre-allocate.
If logging is frequent, set a higher number. Default is 2.
-max n
sets maximum buffers in pool. This limits the amount of memory
consumed for each tracing session. Default is 25.
-ft n_seconds
sets flush timer to n seconds. After a buffer gets filled up, it
gets flushed to the log file or to the consumer for real-time
tracing. This option allows you to specify the time after which to
force a flush. Especially useful for real-time tracing.
-age n_minutes
modifies aging decay time. If a buffer has been allocated but isn't
being used, or the last n minutes have passed, it is freed. This is
generally useful for light tracing, so that memory is freed. This
has nothing to do with maximum buffers that have been allocated.
That value remains the same. Default is 15 minutes.
Log file options
-rt [b]
enables tracing in real-time mode.
-f name
logs to name file. Specifies the log file to which the buffer will
be flushed. The consumer will use this file for its analysis. The
default name and location is c:\logfile.etl. Use a different file
name for each instance of tracing required (-o filename option).
-seq n_mbytes
creates sequential logfile of up to n megabytes. Indicates that the
logging should be sequential and the file size is n megabytes. By
default, logging is sequential.
-cir n_mbytes
creates cyclical logfile of n megabytes. Indicates that logging
should be cyclical. After the file size is reached, logging starts
from the beginning of the file again. The header information is not
lost, however.
System level tracing options
These options provide more specific control over system level
(kernel) tracing. In order to understand these controls, it is
important to understand something about system level tracing. The
following events can be traced at the system level:
Process start/end
Disk I/O
Network TCP/IP, UDP/IP
Thread start/end
Image load
Registry calls
File I/O
Page fault
Of these, the first four are enabled by default. The last four are
not enabled, as this would generate a significant amount of extra
load (resource utilization), which is best to avoid.
-nf n
logs sequentially to new file every n Mb.
-fio
enables file I/O tracing.
-pf
enables page faults tracing.
-hf
enables hard faults tracing. Hard page faults are those that involve
a physical read, such as: read from the disk.
-img
enables image load tracing.
-um
processes private tracing. In this case, the buffer is established
in the private process space instead of the kernel space.
Note
By default, the buffer is started in the kernel space.
Provider-specific options: Provider-level options
In order to use the following options, the provider should have this
functionality enabled. One would therefore have to check with the
provider (like the operating system or the directory service),
before using these options.
-level n
provider-specific: A provider could have number of levels of
tracing. A higher number would indicate a deeper level of tracing.
-flags n
provider-specific: Performs more specific tracing. The flag passed
depends on functionality available in the provider used.
[-h | -help | -?]
displays command-line help.
The default with no options is tracelog -q
Example 1: System Event Tracing Sample Output
The default log file is c:\logfile.etl
Logger Started...
Operation Status: 0L
The operation completed successfully.
Logger Name: NT Kernel Logger
Logger Id: ffff
Logger Thread Id: 1360
Buffer Size: 8 Kb
Maximum Buffers: 25
Minimum Buffers: 2
Number of Buffers: 2
Free Buffers: 1
Buffers Written: 3
Events Lost: 0
Log Buffers Lost: 0
Real Time Buffers Lost: 0
Log File Mode: Sequential
Enabled tracing: Process Thread Disk TcpIp
Log Filename: C:\LogFile.EtlExample 2: Start Directory Service Event
Tracing to Logfile
Directory service (logger name) tracing is started and results are
written to log file mylogfile.etl.
Example 3: Start Directory Service Event Tracing to Command Window
To start directory service event tracing and route the output to the
command window, type the following at the command line:
tracelog –start ds
Information on the event tracing is displayed in the command window.
The output will look similar to the following sample:
Logger Started...
Operation Status: 0L
The operation completed successfully.
Logger Name: ds
Logger Id: 2
Logger Thread Id: 1360
Buffer Size: 8 Kb
Maximum Buffers: 25
Minimum Buffers: 2
Number of Buffers: 2
Free Buffers: 1
Buffers Written: 1
Events Lost: 0
Log Buffers Lost: 0
Real Time Buffers Lost: 0
Log File Mode: Sequential
Log Filename: C:\LogFile.Etl
Example 4: Stop Event Tracing
When you want to stop directory tracing, type the following at the
command line:
tracelog–stop
Output like the following sample will be displayed in the command
window:
Operation Status: 0L
The operation completed successfully.
Logger Name: NT Kernel Logger
Logger Id: ffff
Logger Thread Id: 1360
Buffer Size: 8 Kb
Maximum Buffers: 25
Minimum Buffers: 2
Number of Buffers: 2
Free Buffers: 2
Buffers Written: 7
Events Lost: 0
Log Buffers Lost: 0
Real Time Buffers Lost: 0
Log File Mode: Sequential
Log Filename: C:\LogFile.Etl
Event tracing is a new capability in Windows 2000 that can measure
activity as it happens on your system. It works on the Windows
Management Instrumentation (WMI) model. In this model, there is a
provider, a controller, and a consumer, which all act independently.
An event is any operating system or application activity of interest
generated by a provider, especially relevant to issues of
performance. Typically the activity is related to the use of a
resource such as the processor or disk. Examples of operating system
events are disk I/O and page faults. Examples of application events
are the start and end of a transaction such as the start and end of
a directory service search operation.
A trace is a continuous series of snapshots of the system
performance. Information related to system performance is recorded
simultaneously with each snapshot.
A provider can be the operating system or the directory service. It
registers traceable events, and each event is associated with a
specific, unique GUID. You can get a list of all the events and
their GUIDs by running WBEMTest from the Run dialog box. After
registering its traceable events, the provider continues its usual
activity.
When tracing starts, the controller takes over. It creates a buffer,
where the event traces are recorded. Tracing is then enabled for
those events that the controller has been instructed to monitor,
typically by supplying the event’s GUID. The controller can be made
more complex by giving it the ability to control various parameters
with respect to the buffer, the log file, the type of tracing, and
so on.
The consumer converts the logged traces to a readable form for
further analysis. Once again, the consumer could be a more
sophisticated application, which could trigger an event based on a
value in the event trace log.
Event tracing has several uses. It can do the following:
Supplement counters to derive various system metrics. Not all system
metrics are acquired by using simple, raw counters. For example,
event tracing allows you to determine the response time metric.
Perform a more detailed analysis of system events. Because you can
get additional system metrics with the use of event tracing, you are
better able to understand your system performance and to do capacity
planning.
Identify system problems and bottlenecks. Developers can use event
tracing for initial problem identification and detection of system
bottlenecks.
Notes
Because event tracing is more resource-intensive than regular
performance counters, it should not be used on a continuous basis.
For WMI model details, see the Microsoft Platform SDK.