---
product: Chilkat
product_version: 11.7.0
language: purebasic
language_label: PureBasic
class: Log
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/pbLogRef.html
---
# Chilkat Log — PureBasic — v11.7.0

> Chilkat 11.7.0 · language=purebasic · 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/purebasic/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

**Object Creation**

```purebasic
obj.i = CkLog::ckCreate()

; Make sure to dispose of the object when finished like this:
CkLog::ckDispose(obj);
```

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 PureBasic.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## 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` | `Declare.s ckDebugLogFilePath(obj.i) Declare setCkDebugLogFilePath(obj.i, value.s)` | 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` | `Declare.s ckLastErrorHtml(obj.i) ; (read-only)` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `Declare.s ckLastErrorText(obj.i) ; (read-only)` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `Declare.s ckLastErrorXml(obj.i) ; (read-only)` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `Declare.i ckLastMethodSuccess(obj.i) Declare setCkLastMethodSuccess(obj.i, value.i)` | read/write | Indicates the success or failure of the most recent method call: `1` means success, `0` means failure. |
| `VerboseLogging` | `Declare.i ckVerboseLogging(obj.i) Declare setCkVerboseLogging(obj.i, value.i)` | read/write | If set to `1`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `Declare.s ckVersion(obj.i) ; (read-only)` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Clear` | method | `Declare ckClear(obj.i, initialTag.s)` |
| `EnterContext` | method | `Declare ckEnterContext(obj.i, tag.s)` |
| `LeaveContext` | method | `Declare ckLeaveContext(obj.i)` |
| `LogData` | method | `Declare ckLogData(obj.i, tag.s, message.s)` |
| `LogDataMax` | method | `Declare ckLogDataMax(obj.i, tag.s, message.s, maxNumChars.l)` |
| `LogDateTime` | method | `Declare ckLogDateTime(obj.i, tag.s, gmt.l)` |
| `LogError` | method | `Declare ckLogError(obj.i, message.s)` |
| `LogInfo` | method | `Declare ckLogInfo(obj.i, message.s)` |
| `LogInt` | method | `Declare ckLogInt(obj.i, tag.s, value.l)` |
| `LogInt64` | method | `Declare ckLogInt64(obj.i, tag.s, value.q)` |
| `LogTimestamp` | method | `Declare ckLogTimestamp(obj.i, tag.s)` |

## Methods

### Log.Clear

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

```purebasic
Declare ckClear(obj.i, initialTag.s)
```

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

```purebasic
Declare ckEnterContext(obj.i, tag.s)
```

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

```purebasic
Declare ckLeaveContext(obj.i)
```

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

```purebasic
Declare ckLogData(obj.i, tag.s, message.s)
```

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

```purebasic
Declare ckLogDataMax(obj.i, tag.s, message.s, maxNumChars.l)
```

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

```purebasic
Declare ckLogDateTime(obj.i, tag.s, gmt.l)
```

Logs the current date and time under `tag` using an RFC 822-style date/time representation. If `gmt` is `1`, 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 · purebasic · Log · LogError · method · since 9.5.0.44`

```purebasic
Declare ckLogError(obj.i, message.s)
```

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

```purebasic
Declare ckLogInfo(obj.i, message.s)
```

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

```purebasic
Declare ckLogInt(obj.i, tag.s, value.l)
```

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

### Log.LogInt64

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

```purebasic
Declare ckLogInt64(obj.i, tag.s, value.q)
```

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

```purebasic
Declare ckLogTimestamp(obj.i, tag.s)
```

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.

