---
title: "Enabling AAV logging for an Alchemy Compatibility Package"
description: "Logging for AAV in Alchemy Compatibility Packages is disabled by default as it should only be enabled for testing and troubleshooting purposes."
product: "Alchemy"
edition: "Public"
type: "workflow"
url: "https://docs.cloudhouse.com/public/troubleshooting-packages/logging/aav-logs/enabling-aav-logging/"
---
# Enabling AAV logging for an Alchemy Compatibility Package

Logging for AAV in Cloudhouse Alchemy Compatibility Packages is disabled by default as it should only be enabled for testing and troubleshooting purposes. Starting in Release 1904, several changes were made to both the way AAV logging is enabled and the information captured in the logs. See [Enabling AAV Logging in Alchemy Releases Pre-1904](#enabling-aav-logging-in-alchemy-releases-pre-1904) if you need to enable AAV logging for a Release 1903 (and earlier) Compatibility Package.

Applies to: `Alchemy`

!!! tip

    The information in this article only applies to AAV logging and not the logs created by the actual Compatibility Package itself.

From Release 1904, the AAV log for child processes includes the following columns:

`TIMESTAMP`
:   Date and time the log file entry was written.

`TID`
:   Thread ID that generated the log item.

`LOG TYPE`
:   Defines the type of log entry:   - `INFO` – Contains general information such as a file was redirected. - `ERROR` – Generated when the Windows API function fails. - `DEBUG` – Used to show the information mainly by developers and is used to record information on how AAV is running.

`CATEGORY`
:   Categories represent the area each API belongs to. For example `File` or `Registry`. Categories also have subcategories such as `Redirected` or `NotRedirected`.

`FUNCTION:LINE`
:   The function generating a log event message. It will often be a Windows API, although internal AAV functions generate their own log events.

`FROM`
:   This will usually be the from/original name. For example the filename, registry key, and so forth.

`TO`
:   Will usually be the virtualised name (filename, registry). It can also be blank to indicate the original name has remained the same.

    !!! note

        For application logging, where we virtualise from one location to another the `FROM`/`TO` fields are populated. However, `FROM` may just be used to record details of an API accessing a location that is not virtualised (for example registry access to a non-virtualised path).

`MESSAGE`
:   This is additional information relating to the function generating the log event (for example other parameters), which means this is different for each function. For example, for FILE API's it could be the desired access. For COM, it could be the class registration.

`ERROR (CODE)`
:   If an error occurs, the error code generated is displayed.

`MESSAGE`
:   The error message associated with the error code.

!!! note

    In the 1904 release, the log file format has only been updated for the child process log and not for AAV itself, which may be updated in a later release.

## Process to enable AAV logging for a release 1904 (and later) Alchemy Compatibility Package

To Enable AAV logging for an Alchemy Compatibility Package using Release 1904 (and later), complete the following steps:

1. Navigate to the relevant Compatibility Package.
2. Open `AppAcceleratorV.clc` in a text editor (such as Notepad++).
3. Create the `AAV` tag as shown below and set the value for `Log` to one of the following, depending on the level of logging required:

    - `Off` – The default, where logging is disabled.
    - `On` – Only high-level APIs are logged. There is no nesting of log entries/logging of any lower level API calls. For example, when you create a file, the `CreateFile` API is called. This, in turn, calls the lower level API `NTCreateFile`. With logging set to On, you will not see entries for the lower-level APIs called such as `NTCreateFile` in our example.
    - `Verbose` – All entries, both high-level and low-level API calls.

        For example: `<AAV Log="<value>"`

!!! note

    See the examples below for examples of the actual log entries created when logging is set to `On`/`Verbose`.

4. Save `AppAcceleratorV.clc`.

### Example log entries

If AAV logging is set to `On`, only higher-level APIs are logged. For example:

`11:22:38.947 0000DED8 Info File-NotRedirected chCreateFileW:41 "C:\Windows\Fonts\staticcache.dat" "" "" ""
11:22:38.949 0000DED8 Info Registry-NotRedirected chRegOpenKeyExW:33 "SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack\SurrogateFallback" "" "" ""`

If AAV logging is set to `Verbose`, both higher level and APIs are logged. For example:

`11:18:19.384 00007054 Info File-NotRedirected chNtCreateFile:23 "\??\C:\Windows\Fonts\staticcache.dat" "" "" ""
11:18:19.384 00007054 Info File-NotRedirected chCreateFileW:41 "C:\Windows\Fonts\staticcache.dat" "" "" ""
11:18:19.385 00007054 Info Registry-NotRedirected chNtOpenKeyEx:56 "SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack\SurrogateFallback" "" "" ""
11:18:19.385 00007054 Info Registry-NotRedirected chRegOpenKeyExW:33 "SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack\SurrogateFallback" "" "" ""`

### Backwards Compatibility

Use of `PackageId` to enable AAV logging is still supported (even in 1904 and later versions). For example:

`<AAV PackageId="thisismyid" LogExe="Full">`

## Enabling AAV logging in Alchemy releases Pre-1904

You should only use the process in this document to enable AAV logging for a Release 1903 (and earlier) Compatibility Package.

Otherwise, see the information at the beginning of this article if you are running a later version.

### Process to enable AAV logging for a Pre-1904 release Alchemy Compatibility Package

To Enable AAV logging for an Alchemy Compatibility Package using Pre-1904 Release, complete the following steps:

1. Navigate to the appropriate Compatibility Package folder.
2. Open `AppAcceleratorV.clc` in Notepad++.
3. Create the `AAV` tag as shown below and set the value for `LogExe` and `LogDll` to `Full` or `Error` depending on the level of logging you require:

    - Configuring logging for `LogExe` logs the parent process, e.g. AppAcceleratorV.
    - Configuring logging for `LogDll` logs the child process(es), redirected by AAV.
        For example:

- `<AAV LogExe="Full" LogDll="Full">`

4. Save AppAcceleratorV.clc.

!!! note

    Configuring AAV logging for a 1904 (or later) Compatibility Package using the above process results in no logs being generated. No errors or warnings will be displayed to highlight the incorrect configuration. These tags are just ignored. See the [Process to enable AAV Logging for a Pre-1904 release Alchemy Compatibility Package](#process-to-enable-aav-logging-for-a-pre-1904-release-alchemy-compatibility-package) section above if you want to enable logging for a Package created in release 1904 or later.

### Backwards Compatibility

Use of `PackageId` to enable AAV logging is still supported (even in 1904 and later versions). For example:

`<AAV PackageId="thisismyid" LogExe="Full">`.
