---
product: Chilkat
product_version: 11.7.0
language: pascal
language_label: Lazarus Pascal
class: Log
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/pascal_LogRef.html
---
# Chilkat Log — Lazarus Pascal — v11.7.0

> Chilkat 11.7.0 · language=pascal · class=Log
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/Log.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/guide.md`.

## Purpose

**Build readable structured diagnostic logs with nested context and tagged values.**

`Chilkat.Log` is a lightweight structured logging helper for creating readable diagnostic logs from application code. It can record nested operation contexts, informational messages, error messages, timestamps, integers, 64-bit integers, tagged values, binary data, Base64 data, hex data, shortened data previews, and computed hashes. It is useful when code needs a clear step-by-step record of operations, inputs, outputs, and diagnostic values for troubleshooting.

**Nested operation context**

Use `EnterContext` and `LeaveContext` to group log entries under readable operation names.

**Messages and errors**

Add informational messages, error messages, and tagged text values to explain what the application is doing.

**Numbers and timestamps**

Log integers, 64-bit integers, timestamps, and date/time values when tracing state changes or timing-sensitive workflows.

**Binary diagnostics**

Record binary data as Base64, hex, or shortened previews so byte-level values can be inspected safely in text logs.

**Hash logging**

Compute and log hashes of data when comparing content, verifying transformations, or avoiding full data dumps.

**Clear and reuse**

Clear the log and continue building new diagnostic output during repeated operations or test runs.

**Common pattern:** Create a `Log` object, enter a named context for the operation, log the important values and decisions as the code runs, leave the context, and inspect the resulting text if troubleshooting is needed. Use `Chilkat.Log` for application-level diagnostic output; use `LastErrorText` on Chilkat objects for detailed diagnostics from Chilkat method calls.

For an extended overview, see [Log Class Overview](https://www.chilkatsoft.com/log_class_overview.asp).

## Object creation, unlocking and error handling

**Create / Free**

```pascal
uses
  Chilkat.Log;

var
  obj: TLog;
begin
  obj := TLog.Create;
  try
    if not obj.IsValid then
      raise Exception.Create('Failed to create a TLog instance.');

    // ... use obj ...

  finally
    obj.Free;
  end;
end;
```

`constructor Create;`

Allocates the underlying CkLog object and returns a new TLog instance. Simply adding **Chilkat.Log** to the unit's `uses` clause is enough to locate and bind to the Chilkat shared library (DLL / .so / .dylib) at runtime — no separate load step is required. Check `obj.IsValid` after calling `Create`; it is `False` if the underlying library could not be found/loaded or the object could not be allocated (for example, when unlicensed).

`destructor Destroy; override;`

Every TLog created by calling `Create` should eventually be released by calling `.Free` (inherited from `TObject`). The destructor automatically disposes the underlying CkLog handle. A native (unmanaged) memory leak occurs if the object is never freed.

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Lazarus Pascal.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `property LastErrorHtml: string read GetLastErrorHtml;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `property LastErrorText: string read GetLastErrorText;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `property LastErrorXml: string read GetLastErrorXml;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `property Version: string read GetVersion;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Clear` | method | `procedure Clear(const initialTag: string);` |
| `EnterContext` | method | `procedure EnterContext(const tag: string);` |
| `LeaveContext` | method | `procedure LeaveContext;` |
| `LogData` | method | `procedure LogData(const tag: string;     const message: string);` |
| `LogDataMax` | method | `procedure LogDataMax(const tag: string;     const message: string;     maxNumChars: Integer);` |
| `LogDateTime` | method | `procedure LogDateTime(const tag: string;     gmt: Boolean);` |
| `LogError` | method | `procedure LogError(const message: string);` |
| `LogInfo` | method | `procedure LogInfo(const message: string);` |
| `LogInt` | method | `procedure LogInt(const tag: string;     value: Integer);` |
| `LogInt64` | method | `procedure LogInt64(const tag: string;     value: Int64);` |
| `LogTimestamp` | method | `procedure LogTimestamp(const tag: string);` |

## Methods

### Log.Clear

`Chilkat 11.7.0 · pascal · Log · Clear · method · since 9.5.0.44`

```pascal
procedure Clear(const initialTag: string);
```

Clears all existing log entries and starts a new log whose top-level context is named `initialTag`.

**Typical use:** Call this at the beginning of an operation or test run, then add entries with the other `Log*` methods. The completed structured log can be inspected through the Log object's diagnostic text, such as `LastErrorText`.

### Log.EnterContext

`Chilkat 11.7.0 · pascal · Log · EnterContext · method · since 9.5.0.44`

```pascal
procedure EnterContext(const tag: string);
```

Begins a nested logging context named `tag`. Entries written after this call are grouped inside the new context until a matching `LeaveContext` is called.

**Balanced contexts:** Pair each `EnterContext` with `LeaveContext`. Contexts may be nested to reflect operation hierarchy.

### Log.LeaveContext

`Chilkat 11.7.0 · pascal · Log · LeaveContext · method · since 9.5.0.44`

```pascal
procedure LeaveContext;
```

Ends the current nested logging context and returns logging to its parent context.

**Empty contexts are omitted:** If nothing was logged after entering the current context, Chilkat automatically removes that empty context when it is left.

### Log.LogData

`Chilkat 11.7.0 · pascal · Log · LogData · method · since 9.5.0.44`

```pascal
procedure LogData(const tag: string;
    const message: string);
```

Adds a tagged text value to the current context. The output associates `tag` with `message`, making this useful for named values such as filenames, paths, IDs, states, or protocol fields.

**Sensitive data:** Avoid logging passwords, private keys, access tokens, session secrets, or other sensitive values unless disclosure is intentional.

### Log.LogDataMax

`Chilkat 11.7.0 · pascal · Log · LogDataMax · method · since 9.5.0.44`

```pascal
procedure LogDataMax(const tag: string;
    const message: string;
    maxNumChars: Integer);
```

Adds a tagged text value to the current context, but limits the logged value to at most the first `maxNumChars` characters of `message`.

**Diagnostic previews:** Use this when a value may be very large and only a leading preview is needed. The original input string is not modified.

### Log.LogDateTime

`Chilkat 11.7.0 · pascal · Log · LogDateTime · method · since 9.5.0.44`

```pascal
procedure LogDateTime(const tag: string;
    gmt: Boolean);
```

Logs the current date and time under `tag` using an RFC 822-style date/time representation. If `gmt` is `True`, the logged time is GMT/UTC; otherwise local system time is used.

**Date/time vs. timestamp:** Use `LogDateTime` for a calendar date with timezone context. Use `LogTimestamp` for a time-of-day marker.

### Log.LogError

`Chilkat 11.7.0 · pascal · Log · LogError · method · since 9.5.0.44`

```pascal
procedure LogError(const message: string);
```

Adds `message` as an error entry in the current logging context.

**Application diagnostics:** This is application-defined logging. It is separate from `LastErrorText` produced by other Chilkat objects when their operations fail.

### Log.LogInfo

`Chilkat 11.7.0 · pascal · Log · LogInfo · method · since 9.5.0.44`

```pascal
procedure LogInfo(const message: string);
```

Adds `message` as an informational entry in the current logging context.

**Structured tracing:** Use informational entries for significant steps and decisions. Use `LogData` when the entry is better represented as a named value.

### Log.LogInt

`Chilkat 11.7.0 · pascal · Log · LogInt · method · since 9.5.0.44`

```pascal
procedure LogInt(const tag: string;
    value: Integer);
```

Adds the integer `value` to the current log under `tag`.

### Log.LogInt64

`Chilkat 11.7.0 · pascal · Log · LogInt64 · method · since 9.5.0.44`

```pascal
procedure LogInt64(const tag: string;
    value: Int64);
```

Adds the signed 64-bit integer `value` to the current log under `tag`.

**64-bit values:** Useful for values such as large byte counts, file sizes, sequence numbers, or timestamps that can exceed ordinary integer ranges.

### Log.LogTimestamp

`Chilkat 11.7.0 · pascal · Log · LogTimestamp · method · since 9.5.0.44`

```pascal
procedure LogTimestamp(const tag: string);
```

Logs the current time-of-day under `tag` in `HH:MM:SS:mmm` form, where `mmm` represents milliseconds.

**Timing note:** This is a time-of-day marker, not a monotonic elapsed-time measurement.

