---
product: Chilkat
product_version: 11.7.0
language: delphidll
language_label: Delphi DLL
class: Log
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/dd_CkLogRef.html
---
# Chilkat Log — Delphi DLL — v11.7.0

> Chilkat 11.7.0 · language=delphidll · 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/delphidll/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/Dispose**

```pascal
var
myObject: HCkLog;

begin
myObject := CkLog_Create();

// ...

CkLog_Dispose(myObject);
end;
```

`function CkLog_Create: HCkLog; stdcall;`

Creates an instance of the HCkLog object and returns a handle (i.e. a Pointer). The handle is passed in the 1st argument for the functions listed on this page.

`procedure CkLog_Dispose(handle: HCkLog); stdcall;`

Objects created by calling CkLog_Create must be freed by calling this method. A memory leak occurs if a handle is not disposed by calling this function.

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 Delphi DLL.

## 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` | `procedure CkLog_getDebugLogFilePath(objHandle: HCkLog; outPropVal: HCkString); stdcall; procedure CkLog_putDebugLogFilePath(objHandle: HCkLog; newPropVal: PWideChar); stdcall; function CkLog__debugLogFilePath(objHandle: HCkLog): PWideChar; stdcall;` | 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` | `procedure CkLog_getLastErrorHtml(objHandle: HCkLog; outPropVal: HCkString); stdcall; function CkLog__lastErrorHtml(objHandle: HCkLog): PWideChar; stdcall;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `procedure CkLog_getLastErrorText(objHandle: HCkLog; outPropVal: HCkString); stdcall; function CkLog__lastErrorText(objHandle: HCkLog): PWideChar; stdcall;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `procedure CkLog_getLastErrorXml(objHandle: HCkLog; outPropVal: HCkString); stdcall; function CkLog__lastErrorXml(objHandle: HCkLog): PWideChar; stdcall;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `function CkLog_getLastMethodSuccess(objHandle: HCkLog): wordbool; stdcall; procedure CkLog_putLastMethodSuccess(objHandle: HCkLog; newPropVal: wordbool); stdcall;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `function CkLog_getVerboseLogging(objHandle: HCkLog): wordbool; stdcall; procedure CkLog_putVerboseLogging(objHandle: HCkLog; newPropVal: wordbool); stdcall;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `procedure CkLog_getVersion(objHandle: HCkLog; outPropVal: HCkString); stdcall; function CkLog__version(objHandle: HCkLog): PWideChar; stdcall;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Clear` | method | `procedure CkLog_Clear(objHandle: HCkLog;     initialTag: PWideChar) stdcall;` |
| `EnterContext` | method | `procedure CkLog_EnterContext(objHandle: HCkLog;     tag: PWideChar) stdcall;` |
| `LeaveContext` | method | `procedure CkLog_LeaveContext(objHandle: HCkLog) stdcall;` |
| `LogData` | method | `procedure CkLog_LogData(objHandle: HCkLog;     tag: PWideChar;     message: PWideChar) stdcall;` |
| `LogDataMax` | method | `procedure CkLog_LogDataMax(objHandle: HCkLog;     tag: PWideChar;     message: PWideChar;     maxNumChars: Integer) stdcall;` |
| `LogDateTime` | method | `procedure CkLog_LogDateTime(objHandle: HCkLog;     tag: PWideChar;     gmt: wordbool) stdcall;` |
| `LogError` | method | `procedure CkLog_LogError(objHandle: HCkLog;     message: PWideChar) stdcall;` |
| `LogInfo` | method | `procedure CkLog_LogInfo(objHandle: HCkLog;     message: PWideChar) stdcall;` |
| `LogInt` | method | `procedure CkLog_LogInt(objHandle: HCkLog;     tag: PWideChar;     value: Integer) stdcall;` |
| `LogInt64` | method | `procedure CkLog_LogInt64(objHandle: HCkLog;     tag: PWideChar;     value: Int64) stdcall;` |
| `LogTimestamp` | method | `procedure CkLog_LogTimestamp(objHandle: HCkLog;     tag: PWideChar) stdcall;` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Methods

### Log.Clear

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

```pascal
procedure CkLog_Clear(objHandle: HCkLog;
    initialTag: PWideChar) stdcall;
```

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 · delphidll · Log · EnterContext · method · since 9.5.0.44`

```pascal
procedure CkLog_EnterContext(objHandle: HCkLog;
    tag: PWideChar) stdcall;
```

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 · delphidll · Log · LeaveContext · method · since 9.5.0.44`

```pascal
procedure CkLog_LeaveContext(objHandle: HCkLog) stdcall;
```

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 · delphidll · Log · LogData · method · since 9.5.0.44`

```pascal
procedure CkLog_LogData(objHandle: HCkLog;
    tag: PWideChar;
    message: PWideChar) stdcall;
```

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 · delphidll · Log · LogDataMax · method · since 9.5.0.44`

```pascal
procedure CkLog_LogDataMax(objHandle: HCkLog;
    tag: PWideChar;
    message: PWideChar;
    maxNumChars: Integer) stdcall;
```

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 · delphidll · Log · LogDateTime · method · since 9.5.0.44`

```pascal
procedure CkLog_LogDateTime(objHandle: HCkLog;
    tag: PWideChar;
    gmt: wordbool) stdcall;
```

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 · delphidll · Log · LogError · method · since 9.5.0.44`

```pascal
procedure CkLog_LogError(objHandle: HCkLog;
    message: PWideChar) stdcall;
```

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 · delphidll · Log · LogInfo · method · since 9.5.0.44`

```pascal
procedure CkLog_LogInfo(objHandle: HCkLog;
    message: PWideChar) stdcall;
```

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 · delphidll · Log · LogInt · method · since 9.5.0.44`

```pascal
procedure CkLog_LogInt(objHandle: HCkLog;
    tag: PWideChar;
    value: Integer) stdcall;
```

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

### Log.LogInt64

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

```pascal
procedure CkLog_LogInt64(objHandle: HCkLog;
    tag: PWideChar;
    value: Int64) stdcall;
```

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 · delphidll · Log · LogTimestamp · method · since 9.5.0.44`

```pascal
procedure CkLog_LogTimestamp(objHandle: HCkLog;
    tag: PWideChar) stdcall;
```

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.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `LogDataBase64` | method | before 11.6.1 | — |
| `LogDataHex` | method | before 11.6.1 | — |

