---
product: Chilkat
product_version: 11.7.0
language: objc
language_label: Objective-C
class: Log
class_name: CkoLog
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/objcCkoLogRef.html
---
# Chilkat Log — Objective-C — v11.7.0

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

```objectivec
CkoLog *obj = [[CkoLog alloc] init];
```

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 Objective-C.

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` | `@property (nonatomic, copy) NSString *DebugLogFilePath;` | 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 (nonatomic, readonly, copy) NSString *LastErrorHtml;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `@property (nonatomic, readonly, copy) NSString *LastErrorText;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `@property (nonatomic, readonly, copy) NSString *LastErrorXml;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `@property (nonatomic) BOOL LastMethodSuccess;` | read/write | Indicates the success or failure of the most recent method call: `YES` means success, `NO` means failure. |
| `VerboseLogging` | `@property (nonatomic) BOOL VerboseLogging;` | read/write | If set to `YES`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `@property (nonatomic, readonly, copy) NSString *Version;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Clear` | method | `- (void)Clear:(NSString *)initialTag;` |
| `EnterContext` | method | `- (void)EnterContext:(NSString *)tag;` |
| `LeaveContext` | method | `- (void)LeaveContext;` |
| `LogData` | method | `- (void)LogData:(NSString *)tag     message:(NSString *)message;` |
| `LogDataBase64` | method | `- (void)LogDataBase64:(NSString *)tag     data:(NSData *)data;` |
| `LogDataHex` | method | `- (void)LogDataHex:(NSString *)tag     data:(NSData *)data;` |
| `LogDataMax` | method | `- (void)LogDataMax:(NSString *)tag     message:(NSString *)message     maxNumChars:(NSNumber *)maxNumChars;` |
| `LogDateTime` | method | `- (void)LogDateTime:(NSString *)tag     gmt:(BOOL)gmt;` |
| `LogError` | method | `- (void)LogError:(NSString *)message;` |
| `LogInfo` | method | `- (void)LogInfo:(NSString *)message;` |
| `LogInt` | method | `- (void)LogInt:(NSString *)tag     value:(NSNumber *)value;` |
| `LogTimestamp` | method | `- (void)LogTimestamp:(NSString *)tag;` |

## Methods

### Log.Clear

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

```objectivec
- (void)Clear:(NSString *)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 · objc · Log · EnterContext · method · since 9.5.0.44`

```objectivec
- (void)EnterContext:(NSString *)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 · objc · Log · LeaveContext · method · since 9.5.0.44`

```objectivec
- (void)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 · objc · Log · LogData · method · since 9.5.0.44`

```objectivec
- (void)LogData:(NSString *)tag 
    message:(NSString *)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.LogDataBase64

`Chilkat 11.7.0 · objc · Log · LogDataBase64 · method · since 9.5.0.44`

```objectivec
- (void)LogDataBase64:(NSString *)tag 
    data:(NSData *)data;
```

Encodes the supplied binary `data` as Base64 and adds the encoded value to the current log under `tag`.

**Base64:** Base64 makes arbitrary bytes printable in a text log. It is an encoding, not encryption.

### Log.LogDataHex

`Chilkat 11.7.0 · objc · Log · LogDataHex · method · since 9.5.0.44`

```objectivec
- (void)LogDataHex:(NSString *)tag 
    data:(NSData *)data;
```

Encodes the supplied binary `data` as hexadecimal text and adds the encoded value to the current log under `tag`.

**Hex output:** Hex is convenient for short protocol fields, identifiers, digests, and byte-level troubleshooting because each byte is represented by two hex digits.

### Log.LogDataMax

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

```objectivec
- (void)LogDataMax:(NSString *)tag 
    message:(NSString *)message 
    maxNumChars:(NSNumber *)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 · objc · Log · LogDateTime · method · since 9.5.0.44`

```objectivec
- (void)LogDateTime:(NSString *)tag 
    gmt:(BOOL)gmt;
```

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

```objectivec
- (void)LogError:(NSString *)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 · objc · Log · LogInfo · method · since 9.5.0.44`

```objectivec
- (void)LogInfo:(NSString *)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 · objc · Log · LogInt · method · since 9.5.0.44`

```objectivec
- (void)LogInt:(NSString *)tag 
    value:(NSNumber *)value;
```

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

### Log.LogTimestamp

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

```objectivec
- (void)LogTimestamp:(NSString *)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.

