---
product: Chilkat
product_version: 11.7.0
language: ckperl
language_label: Perl
class: Log
class_name: CkLog
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/perlCkLogRef.html
---
# Chilkat Log — Perl — v11.7.0

> Chilkat 11.7.0 · language=ckperl · class=Log (CkLog)
> 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/ckperl/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**

```perl
$obj = chilkat::CkLog->new();
```

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

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` | `# $strVal is a string # $ckStr is a CkString $log->get_DebugLogFilePath($ckStr); $strVal = $log->debugLogFilePath(); $log->put_DebugLogFilePath($strVal);` | 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` | `# $strVal is a string # $ckStr is a CkString $log->get_LastErrorHtml($ckStr); $strVal = $log->lastErrorHtml();` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `# $strVal is a string # $ckStr is a CkString $log->get_LastErrorText($ckStr); $strVal = $log->lastErrorText();` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `# $strVal is a string # $ckStr is a CkString $log->get_LastErrorXml($ckStr); $strVal = $log->lastErrorXml();` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `# $boolVal is a boolean $boolVal = $log->get_LastMethodSuccess(); $log->put_LastMethodSuccess($boolVal);` | read/write | Indicates the success or failure of the most recent method call: `1` means success, `0` means failure. |
| `Utf8` | `# $boolVal is a boolean $boolVal = $log->get_Utf8(); $log->put_Utf8($boolVal);` | read/write | When set to `1`, all `string` arguments and return values are interpreted as UTF-8 strings. |
| `VerboseLogging` | `# $boolVal is a boolean $boolVal = $log->get_VerboseLogging(); $log->put_VerboseLogging($boolVal);` | read/write | If set to `1`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `# $strVal is a string # $ckStr is a CkString $log->get_Version($ckStr); $strVal = $log->version();` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Clear` | method | `# $initialTag is a string $log->Clear($initialTag);` |
| `EnterContext` | method | `# $tag is a string $log->EnterContext($tag);` |
| `LeaveContext` | method | `$log->LeaveContext();` |
| `LogData` | method | `# $tag is a string # $message is a string $log->LogData($tag, $message);` |
| `LogDataMax` | method | `# $tag is a string # $message is a string # $maxNumChars is an integer $log->LogDataMax($tag, $message, $maxNumChars);` |
| `LogDateTime` | method | `# $tag is a string # $gmt is a boolean $log->LogDateTime($tag, $gmt);` |
| `LogError` | method | `# $message is a string $log->LogError($message);` |
| `LogInfo` | method | `# $message is a string $log->LogInfo($message);` |
| `LogInt` | method | `# $tag is a string # $value is an integer $log->LogInt($tag, $value);` |
| `LogInt64` | method | `# $tag is a string # $value is a 64-bit integer $log->LogInt64($tag, $value);` |
| `LogTimestamp` | method | `# $tag is a string $log->LogTimestamp($tag);` |

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 · ckperl · Log · Clear · method · since 9.5.0.44`

```perl
# $initialTag is a string

$log->Clear($initialTag);
```

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

```perl
# $tag is a string

$log->EnterContext($tag);
```

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

```perl
$log->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 · ckperl · Log · LogData · method · since 9.5.0.44`

```perl
# $tag is a string

# $message is a string

$log->LogData($tag, $message);
```

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

```perl
# $tag is a string

# $message is a string

# $maxNumChars is an integer

$log->LogDataMax($tag, $message, $maxNumChars);
```

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

```perl
# $tag is a string

# $gmt is a boolean

$log->LogDateTime($tag, $gmt);
```

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

```perl
# $message is a string

$log->LogError($message);
```

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

```perl
# $message is a string

$log->LogInfo($message);
```

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

```perl
# $tag is a string

# $value is an integer

$log->LogInt($tag, $value);
```

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

### Log.LogInt64

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

```perl
# $tag is a string

# $value is a 64-bit integer

$log->LogInt64($tag, $value);
```

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

```perl
# $tag is a string

$log->LogTimestamp($tag);
```

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 | — |

