Introducing TrueVFS Extension Logging

This is another posting to introduce a TrueVFS feature by exploring the sample applications generated from the TrueVFS Archetype Access. This time, I will spotlight TrueVFS’ logging capabilities with the TrueVFS Extension Logging.

In case you haven’t done so, please follow the instructions in this posting to generate the sample applications from the Maven archetype now. Next, please fire up a shell (or your favorite IDE) and run the following Maven command:

mvn process-classes exec:java -Dexec.mainClass=com.company.mavenproject1.java.file.Tree

This should produce some output like the following:

[INFO] Scanning for projects...
```INFO
[INFO] ------------------------------------------------------------------------
[INFO] Building mavenproject1 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
```INFO
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ mavenproject1 ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\resources
```INFO
[INFO] --- scala-maven-plugin:3.1.0:add-source (scala-compile-first) @ mavenproject1 ---
[INFO] Add Source directory: C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\scala
[INFO] Add Test Source directory: C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\test\scala
```INFO
[INFO] --- scala-maven-plugin:3.1.0:compile (scala-compile-first) @ mavenproject1 ---
[INFO] C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\java:-1: info: compiling
[INFO] C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\scala:-1: info: compiling
[INFO] Compiling 15 source files to C:\Users\christian\Documents\NetBeansProjects\mavenproject1\target\classes at 1346956693174
[INFO] prepare-compile in 0 s
[INFO] compile in 3 s
```INFO
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ mavenproject1 ---
[INFO] Compiling 12 source files to C:\Users\christian\Documents\NetBeansProjects\mavenproject1\target\classes
```INFO
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 >>>
```INFO
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 <<<
```INFO
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 ---
SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
.
|-- nbactions.xml
|-- pom.xml
|-- src
|   `-- main
|       |-- java
|       |   `-- com
|       |       `-- company
|       |           `-- mavenproject1
|       |               `-- java
|       |                   |-- Application.java
|       |                   |-- diagnostics
|       |                   |   `-- DriverMap2Html.java
|       |                   |-- file
|       |                   |   |-- Cat.java
|       |                   |   |-- Copy.java
|       |                   |   |-- HelloWorld.java
|       |                   |   |-- Pickr.java
|       |                   |   `-- Tree.java
|       |                   `-- path
|       |                       |-- Cat1.java
|       |                       |-- Cat2.java
|       |                       |-- Copy.java
|       |                       |-- HelloWorld.java
|       |                       `-- Tree.java
|       `-- scala
|           `-- com
|               `-- company
|                   `-- mavenproject1
|                       `-- scala
|                           |-- Application.scala
|                           |-- file
|                           |   `-- Tree.scala
|                           `-- path
|                               `-- Tree.scala
|-- target
|   |-- classes
|   |   `-- com
|   |       `-- company
|   |           `-- mavenproject1
|   |               |-- java
|   |               |   |-- Application.class
|   |               |   |-- diagnostics
|   |               |   |   |-- DriverMap2Html$1.class
|   |               |   |   `-- DriverMap2Html.class
|   |               |   |-- file
|   |               |   |   |-- Cat.class
|   |               |   |   |-- Copy.class
|   |               |   |   |-- HelloWorld.class
|   |               |   |   |-- Pickr$1.class
|   |               |   |   |-- Pickr.class
|   |               |   |   `-- Tree.class
|   |               |   `-- path
|   |               |       |-- Cat1.class
|   |               |       |-- Cat2.class
|   |               |       |-- Copy.class
|   |               |       |-- HelloWorld.class
|   |               |       `-- Tree.class
|   |               `-- scala
|   |                   |-- Application.class
|   |                   |-- file
|   |                   |   |-- Tree$$anonfun$com$company$mavenproject1$scala$file$Tree$$graph$1.class
|   |                   |   |-- Tree$$anonfun$com$company$mavenproject1$scala$file$Tree$$graph$2.class
|   |                   |   |-- Tree$$anonfun$work$1.class
|   |                   |   |-- Tree$.class
|   |                   |   `-- Tree.class
|   |                   `-- path
|   |                       |-- Tree$$anon$1$$anonfun$1.class
|   |                       |-- Tree$$anon$1.class
|   |                       |-- Tree$$anonfun$com$company$mavenproject1$scala$path$Tree$$graph$1.class
|   |                       |-- Tree$$anonfun$com$company$mavenproject1$scala$path$Tree$$graph$2.class
|   |                       |-- Tree$$anonfun$work$1.class
|   |                       |-- Tree$.class
|   |                       `-- Tree.class
|   |-- classes.1644408872.timestamp
|   `-- generated-sources
|       `-- annotations
`-- test.zip
    |-- readme.txt
    |-- test.jar
    |   `-- readme.txt
    |-- test.tar
    |   `-- readme.txt
    |-- test.tar.bz2
    |   `-- readme.txt
    |-- test.tar.gz
    |   `-- readme.txt
    |-- test.tar.xz
    |   `-- readme.txt
    `-- the-password-is-test1234.tzp

As you can see, the Tree class graphed the current directory tree and stepped into the test.zip file with its nested archive files (I have cancelled the upcoming Swing dialog here). Nothing spectacular has happened so far and all systems are functional.

Logging Service Location Activity

Now let’s gradually add some some logging capabilities to check what’s actually happening inside the TrueZIP Kernel. First, locate and uncomment the following lines in the file pom.xml:

<!-- You need to select an SLF4J Logger implementation to get some
     logging output. -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.0.7</version>
    <scope>runtime</scope>
</dependency>

Now rerun the maven command again. This time you should see something like this:

[INFO] Scanning for projects...
```INFO
[INFO] ------------------------------------------------------------------------
[INFO] Building mavenproject1 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
```INFO
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ mavenproject1 ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\resources
```INFO
[INFO] --- scala-maven-plugin:3.1.0:add-source (scala-compile-first) @ mavenproject1 ---
[INFO] Add Source directory: C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\scala
[INFO] Add Test Source directory: C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\test\scala
```INFO
[INFO] --- scala-maven-plugin:3.1.0:compile (scala-compile-first) @ mavenproject1 ---
[INFO] Nothing to compile - all classes are up to date
```INFO
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ mavenproject1 ---
[INFO] Nothing to compile - all classes are up to date
```INFO
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 >>>
```INFO
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 <<<
```INFO
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 ---
21:10:20.739 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.kernel.impl.DefaultManagerFactory[priority=0].
21:10:20.739 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.kernel.impl.DefaultManagerFactory[priority=0].
21:10:21.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.kernel.spec.spi.FsDriverMapFactory[priority=0].
21:10:21.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.kernel.spec.spi.FsDriverMapFactory[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.file.FileDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.jar.JarDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.zip.ZipDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.http.HttpDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.odf.OdfDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.TarDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.bzip2.TarBZip2DriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.gzip.TarGZipDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.xz.TarXZDriverMapModifier[priority=0].
21:10:21.019 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.zip.raes.ZipRaesDriverMapModifier[priority=0].
.
|-- nbactions.xml
|-- pom.xml
|-- src
|   `-- main
|       |-- java
|       |   `-- com
|       |       `-- company
|       |           `-- mavenproject1
|       |               `-- java
|       |                   |-- Application.java
|       |                   |-- diagnostics
|       |                   |   `-- DriverMap2Html.java
|       |                   |-- file
|       |                   |   |-- Cat.java
|       |                   |   |-- Copy.java
|       |                   |   |-- HelloWorld.java
|       |                   |   |-- Pickr.java
|       |                   |   `-- Tree.java
|       |                   `-- path
|       |                       |-- Cat1.java
|       |                       |-- Cat2.java
|       |                       |-- Copy.java
|       |                       |-- HelloWorld.java
|       |                       `-- Tree.java
|       `-- scala
|           `-- com
|               `-- company
|                   `-- mavenproject1
|                       `-- scala
|                           |-- Application.scala
|                           |-- file
|                           |   `-- Tree.scala
|                           `-- path
|                               `-- Tree.scala
|-- target
|   |-- classes
|   |   `-- com
|   |       `-- company
|   |           `-- mavenproject1
|   |               |-- java
|   |               |   |-- Application.class
|   |               |   |-- diagnostics
|   |               |   |   |-- DriverMap2Html$1.class
|   |               |   |   `-- DriverMap2Html.class
|   |               |   |-- file
|   |               |   |   |-- Cat.class
|   |               |   |   |-- Copy.class
|   |               |   |   |-- HelloWorld.class
|   |               |   |   |-- Pickr$1.class
|   |               |   |   |-- Pickr.class
|   |               |   |   `-- Tree.class
|   |               |   `-- path
|   |               |       |-- Cat1.class
|   |               |       |-- Cat2.class
|   |               |       |-- Copy.class
|   |               |       |-- HelloWorld.class
|   |               |       `-- Tree.class
|   |               `-- scala
|   |                   |-- Application.class
|   |                   |-- file
|   |                   |   |-- Tree$$anonfun$com$company$mavenproject1$scala$file$Tree$$graph$1.class
|   |                   |   |-- Tree$$anonfun$com$company$mavenproject1$scala$file$Tree$$graph$2.class
|   |                   |   |-- Tree$$anonfun$work$1.class
|   |                   |   |-- Tree$.class
|   |                   |   `-- Tree.class
|   |                   `-- path
|   |                       |-- Tree$$anon$1$$anonfun$1.class
|   |                       |-- Tree$$anon$1.class
|   |                       |-- Tree$$anonfun$com$company$mavenproject1$scala$path$Tree$$graph$1.class
|   |                       |-- Tree$$anonfun$com$company$mavenproject1$scala$path$Tree$$graph$2.class
|   |                       |-- Tree$$anonfun$work$1.class
|   |                       |-- Tree$.class
|   |                       `-- Tree.class
|   |-- classes.1644408872.timestamp
|   `-- generated-sources
|       `-- annotations
21:10:21.129 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.driver.file.FileBufferPoolFactory[priority=0].
21:10:21.129 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.file.FileBufferPoolFactory[priority=0].
`-- test.zip
    |-- readme.txt
    |-- test.jar
    |   `-- readme.txt
    |-- test.tar
    |   `-- readme.txt
    |-- test.tar.bz2
    |   `-- readme.txt
    |-- test.tar.gz
    |   `-- readme.txt
    |-- test.tar.xz
    |   `-- readme.txt
21:10:21.441 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.key.spec.spi.KeyManagerMapFactory[priority=0].
21:10:21.441 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.spec.spi.KeyManagerMapFactory[priority=0].
21:10:21.441 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.console.ConsolePromptingAesPbeKeyManagerMapModifier[priority=-300].
21:10:21.441 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.SwingPromptingAesPbeKeyManagerMapModifier[priority=0].
21:10:21.877 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:10:21.877 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:10:23.434 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:10:23.435 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:10:23.436 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.feedback.TemporarilyDisableDefaultButtonFeedbackDecorator[priority=-200].
21:10:23.437 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.hurlfb.HurlingWindowFeedbackDecorator[priority=-100].
    `-- the-password-is-test1234.tzp
        `-- readme.txt

As you can see the output has been sparkled with some logging messages from the class net.java.truecommons.services.Locator. As the name implies, this class locates advertised services on the class path. In brief terms, it scans the class path for a factory or provider service with some optional modifier or decorator services and creates a composite-factory or -container which applies the located services in prioritized order. In simpler terms, you may think of it as an auto-configuring IoC container which nicely integrates with the Dependency Injection pattern.

First, the locator creates a meta-factory for the file system manager. Next, it creates a composite-factory for the file system driver map. The next messages from this class occur when the program hits the file test.zip. First, a composite-factory for the I/O buffer pool is created. Then, when the program hits the file the-password-is-test1234.tzp, a composite-factory for the secret key manager map is created which contains some mappings for Console and Swing based prompting. Just for fun, I have entered a wrong password at the Swing based dialog and so another meta-factory for providing visible and audible feedback to the user is created - try yourself and watch the fun.

That’s about all the TrueZIP Kernel logs without further tweaking. You can use these basic logging capabilities to verify the setup of your class path. When setup correctly, you should see a logging message for each located service (file system manager, file system driver mappings, I/O buffer pool, key manager mappings etc).

Logging File System Activity

We haven’t seen any logging messages for actual file system activity yet. That’s by intention because logging for debugging purposes is largely an antipattern (you should write better tests instead). But if you really need it… then please locate and uncomment the following lines in the file pom.xml (and keep the previous changes):

<!-- This runtime dependency instruments the TrueVFS Kernel for
     logging via SLF4J. -->
<dependency>
    <groupId>net.java.truevfs</groupId>
    <artifactId>truevfs-ext-logging</artifactId>
    <version>${truevfs.version}</version>
    <scope>runtime</scope>
</dependency>

Now rerun the maven command again. This time you should see something like this:

[INFO] Scanning for projects...
```INFO
[INFO] ------------------------------------------------------------------------
[INFO] Building mavenproject1 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
```INFO
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ mavenproject1 ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\resources
```INFO
[INFO] --- scala-maven-plugin:3.1.0:add-source (scala-compile-first) @ mavenproject1 ---
[INFO] Add Source directory: C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\main\scala
[INFO] Add Test Source directory: C:\Users\christian\Documents\NetBeansProjects\mavenproject1\src\test\scala
```INFO
[INFO] --- scala-maven-plugin:3.1.0:compile (scala-compile-first) @ mavenproject1 ---
[INFO] Nothing to compile - all classes are up to date
```INFO
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ mavenproject1 ---
[INFO] Nothing to compile - all classes are up to date
```INFO
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 >>>
```INFO
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 <<<
```INFO
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ mavenproject1 ---
21:42:19.026 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.kernel.impl.DefaultManagerFactory[priority=0].
21:42:19.030 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.kernel.impl.DefaultManagerFactory[priority=0].
21:42:19.035 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.ext.logging.LogManagerDecorator[priority=-100].
21:42:19.314 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.kernel.spec.spi.FsDriverMapFactory[priority=0].
21:42:19.314 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.kernel.spec.spi.FsDriverMapFactory[priority=0].
21:42:19.338 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.file.FileDriverMapModifier[priority=0].
21:42:19.338 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.jar.JarDriverMapModifier[priority=0].
21:42:19.338 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.zip.ZipDriverMapModifier[priority=0].
21:42:19.338 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.http.HttpDriverMapModifier[priority=0].
21:42:19.339 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.odf.OdfDriverMapModifier[priority=0].
21:42:19.339 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.TarDriverMapModifier[priority=0].
21:42:19.339 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.bzip2.TarBZip2DriverMapModifier[priority=0].
21:42:19.339 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.gzip.TarGZipDriverMapModifier[priority=0].
21:42:19.339 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.tar.xz.TarXZDriverMapModifier[priority=0].
21:42:19.339 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.zip.raes.ZipRaesDriverMapModifier[priority=0].
.
|-- nbactions.xml
|-- pom.xml
|-- src
|   `-- main
|       |-- java
|       |   `-- com
|       |       `-- company
|       |           `-- mavenproject1
|       |               `-- java
|       |                   |-- Application.java
|       |                   |-- diagnostics
|       |                   |   `-- DriverMap2Html.java
|       |                   |-- file
|       |                   |   |-- Cat.java
|       |                   |   |-- Copy.java
|       |                   |   |-- HelloWorld.java
|       |                   |   |-- Pickr.java
|       |                   |   `-- Tree.java
|       |                   `-- path
|       |                       |-- Cat1.java
|       |                       |-- Cat2.java
|       |                       |-- Copy.java
|       |                       |-- HelloWorld.java
|       |                       `-- Tree.java
|       `-- scala
|           `-- com
|               `-- company
|                   `-- mavenproject1
|                       `-- scala
|                           |-- Application.scala
|                           |-- file
|                           |   `-- Tree.scala
|                           `-- path
|                               `-- Tree.scala
|-- target
|   |-- classes
|   |   `-- com
|   |       `-- company
|   |           `-- mavenproject1
|   |               |-- java
|   |               |   |-- Application.class
|   |               |   |-- diagnostics
|   |               |   |   |-- DriverMap2Html$1.class
|   |               |   |   `-- DriverMap2Html.class
|   |               |   |-- file
|   |               |   |   |-- Cat.class
|   |               |   |   |-- Copy.class
|   |               |   |   |-- HelloWorld.class
|   |               |   |   |-- Pickr$1.class
|   |               |   |   |-- Pickr.class
|   |               |   |   `-- Tree.class
|   |               |   `-- path
|   |               |       |-- Cat1.class
|   |               |       |-- Cat2.class
|   |               |       |-- Copy.class
|   |               |       |-- HelloWorld.class
|   |               |       `-- Tree.class
|   |               `-- scala
|   |                   |-- Application.class
|   |                   |-- file
|   |                   |   |-- Tree$$anonfun$com$company$mavenproject1$scala$file$Tree$$graph$1.class
|   |                   |   |-- Tree$$anonfun$com$company$mavenproject1$scala$file$Tree$$graph$2.class
|   |                   |   |-- Tree$$anonfun$work$1.class
|   |                   |   |-- Tree$.class
|   |                   |   `-- Tree.class
|   |                   `-- path
|   |                       |-- Tree$$anon$1$$anonfun$1.class
|   |                       |-- Tree$$anon$1.class
|   |                       |-- Tree$$anonfun$com$company$mavenproject1$scala$path$Tree$$graph$1.class
|   |                       |-- Tree$$anonfun$com$company$mavenproject1$scala$path$Tree$$graph$2.class
|   |                       |-- Tree$$anonfun$work$1.class
|   |                       |-- Tree$.class
|   |                       `-- Tree.class
|   |-- classes.1644408872.timestamp
|   `-- generated-sources
|       `-- annotations
21:42:19.494 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.driver.file.FileBufferPoolFactory[priority=0].
21:42:19.495 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.driver.file.FileBufferPoolFactory[priority=0].
21:42:19.496 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.ext.logging.LogBufferPoolDecorator[priority=-100].
21:42:19.543 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Opened net.java.truevfs.driver.file.FileNode@c89b0a[name=test.zip, types=FILE, size(DATA)=4938, size(STORAGE)=4938, time(CREATE)=Do Sep 06 20:21:11 MESZ 2012, time(READ)=Do Sep 06 20:21:11 MESZ 2012, time(WRITE)=Do Sep 06 20:21:11 MESZ 2012, members=null]
`-- test.zip
    |-- readme.txt
21:42:19.640 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Allocated net.java.truevfs.driver.file.FileBuffer@1d1ee29[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3104650628125359470.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.676 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Opened net.java.truevfs.driver.file.FileBuffer@1d1ee29[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3104650628125359470.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.681 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Closing net.java.truevfs.driver.file.FileBuffer@1d1ee29[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3104650628125359470.tmp, types=FILE, size(DATA)=565, size(STORAGE)=565, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.688 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Opened net.java.truevfs.driver.file.FileBuffer@1d1ee29[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3104650628125359470.tmp, types=FILE, size(DATA)=565, size(STORAGE)=565, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.700 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Opened net.java.truevfs.kernel.impl.CacheEntry$ProxyEntry@17e9678[entry=net.java.truevfs.comp.zipdriver.ZipDriverEntry@1ebf0d3[name=test.jar, type=FILE, size(DATA)=565, size(STORAGE)=565, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]]
    |-- test.jar
    |   `-- readme.txt
21:42:19.707 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Opened net.java.truevfs.comp.zipdriver.ZipDriverEntry@1c11fcb[name=test.tar, type=FILE, size(DATA)=10240, size(STORAGE)=557, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
21:42:19.720 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Allocated net.java.truevfs.driver.file.FileBuffer@1a5cff8[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp8336257248946515737.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.721 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Opened net.java.truevfs.driver.file.FileBuffer@1a5cff8[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp8336257248946515737.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.723 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Closing net.java.truevfs.driver.file.FileBuffer@1a5cff8[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp8336257248946515737.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.723 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Closing net.java.truevfs.comp.zipdriver.ZipDriverEntry@f8b1fc[name=test.tar, type=FILE, size(DATA)=10240, size(STORAGE)=557, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
    |-- test.tar
    |   `-- readme.txt
21:42:19.727 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Opened net.java.truevfs.comp.zipdriver.ZipDriverEntry@a370c7[name=test.tar.bz2, type=FILE, size(DATA)=735, size(STORAGE)=735, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
21:42:19.735 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Allocated net.java.truevfs.driver.file.FileBuffer@d9fdcf[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7586856133127331229.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.737 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Opened net.java.truevfs.driver.file.FileBuffer@d9fdcf[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7586856133127331229.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.739 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Closing net.java.truevfs.driver.file.FileBuffer@d9fdcf[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7586856133127331229.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.739 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Closing net.java.truevfs.comp.zipdriver.ZipDriverEntry@1a62593[name=test.tar.bz2, type=FILE, size(DATA)=735, size(STORAGE)=735, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
    |-- test.tar.bz2
    |   `-- readme.txt
21:42:19.741 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Opened net.java.truevfs.comp.zipdriver.ZipDriverEntry@13ab896[name=test.tar.gz, type=FILE, size(DATA)=575, size(STORAGE)=575, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
21:42:19.743 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Allocated net.java.truevfs.driver.file.FileBuffer@2c92f2[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp5027056381023105238.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.744 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Opened net.java.truevfs.driver.file.FileBuffer@2c92f2[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp5027056381023105238.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.746 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Closing net.java.truevfs.driver.file.FileBuffer@2c92f2[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp5027056381023105238.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.746 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Closing net.java.truevfs.comp.zipdriver.ZipDriverEntry@63679a[name=test.tar.gz, type=FILE, size(DATA)=575, size(STORAGE)=575, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
    |-- test.tar.gz
    |   `-- readme.txt
21:42:19.749 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Opened net.java.truevfs.comp.zipdriver.ZipDriverEntry@1286e6b[name=test.tar.xz, type=FILE, size(DATA)=660, size(STORAGE)=660, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
21:42:19.854 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Allocated net.java.truevfs.driver.file.FileBuffer@1fc5681[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7299524034343155815.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.855 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Opened net.java.truevfs.driver.file.FileBuffer@1fc5681[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7299524034343155815.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.857 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Closing net.java.truevfs.driver.file.FileBuffer@1fc5681[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7299524034343155815.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.857 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputStream - Closing net.java.truevfs.comp.zipdriver.ZipDriverEntry@193302b[name=test.tar.xz, type=FILE, size(DATA)=660, size(STORAGE)=660, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]
    |-- test.tar.xz
    |   `-- readme.txt
21:42:19.863 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.key.spec.spi.KeyManagerMapFactory[priority=0].
21:42:19.863 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.spec.spi.KeyManagerMapFactory[priority=0].
21:42:19.869 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.console.ConsolePromptingAesPbeKeyManagerMapModifier[priority=-300].
21:42:19.869 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.SwingPromptingAesPbeKeyManagerMapModifier[priority=0].
21:42:19.883 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Allocated net.java.truevfs.driver.file.FileBuffer@a8f8f7[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3954039311298668816.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.884 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Opened net.java.truevfs.driver.file.FileBuffer@a8f8f7[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3954039311298668816.tmp, types=FILE, size(DATA)=0, size(STORAGE)=0, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.886 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogOutputStream - Closing net.java.truevfs.driver.file.FileBuffer@a8f8f7[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3954039311298668816.tmp, types=FILE, size(DATA)=637, size(STORAGE)=637, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.887 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Opened net.java.truevfs.driver.file.FileBuffer@a8f8f7[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3954039311298668816.tmp, types=FILE, size(DATA)=637, size(STORAGE)=637, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:19.888 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Opened net.java.truevfs.kernel.impl.CacheEntry$ProxyEntry@1e131e5[entry=net.java.truevfs.comp.zipdriver.ZipDriverEntry@192d019[name=the-password-is-test1234.tzp, type=FILE, size(DATA)=637, size(STORAGE)=637, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]]
21:42:20.307 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:42:20.308 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:42:28.461 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Located net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:42:28.462 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.spi.FeedbackFactory[priority=0].
21:42:28.463 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.swing.feedback.TemporarilyDisableDefaultButtonFeedbackDecorator[priority=-200].
21:42:28.464 [AWT-EventQueue-0] DEBUG n.java.truecommons.services.Locator - Selecting net.java.truevfs.key.hurlfb.HurlingWindowFeedbackDecorator[priority=-100].
    `-- the-password-is-test1234.tzp
        `-- readme.txt
21:42:32.988 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Closing net.java.truevfs.kernel.impl.CacheEntry$ProxyEntry@3dca93[entry=net.java.truevfs.comp.zipdriver.ZipDriverEntry@be9ade[name=the-password-is-test1234.tzp, type=FILE, size(DATA)=637, size(STORAGE)=637, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]]
21:42:32.988 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Closing net.java.truevfs.driver.file.FileBuffer@a8f8f7[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3954039311298668816.tmp, types=FILE, size(DATA)=637, size(STORAGE)=637, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:32.988 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Releasing net.java.truevfs.driver.file.FileBuffer@1fc5681[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7299524034343155815.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Releasing net.java.truevfs.driver.file.FileBuffer@2c92f2[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp5027056381023105238.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Releasing net.java.truevfs.driver.file.FileBuffer@d9fdcf[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp7586856133127331229.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Releasing net.java.truevfs.driver.file.FileBuffer@1a5cff8[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp8336257248946515737.tmp, types=FILE, size(DATA)=1710, size(STORAGE)=1710, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Closing net.java.truevfs.kernel.impl.CacheEntry$ProxyEntry@1fd8355[entry=net.java.truevfs.comp.zipdriver.ZipDriverEntry@b9613e[name=test.jar, type=FILE, size(DATA)=565, size(STORAGE)=565, time(WRITE)=Sa Aug 04 20:57:46 MESZ 2012]]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Closing net.java.truevfs.driver.file.FileBuffer@1d1ee29[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3104650628125359470.tmp, types=FILE, size(DATA)=565, size(STORAGE)=565, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Releasing net.java.truevfs.driver.file.FileBuffer@1d1ee29[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3104650628125359470.tmp, types=FILE, size(DATA)=565, size(STORAGE)=565, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.java.truevfs.ext.logging.LogBuffer - Releasing net.java.truevfs.driver.file.FileBuffer@a8f8f7[name=C:/Users/CHRIST~1/AppData/Local/Temp/tzp3954039311298668816.tmp, types=FILE, size(DATA)=637, size(STORAGE)=637, time(CREATE)=Do Sep 06 21:42:19 MESZ 2012, time(READ)=Do Sep 06 21:42:19 MESZ 2012, time(WRITE)=Do Sep 06 21:42:19 MESZ 2012, members=null]
21:42:33.004 [com.company.mavenproject1.java.file.Tree.main()] DEBUG n.j.t.ext.logging.LogInputChannel - Closing net.java.truevfs.driver.file.FileNode@c89b0a[name=test.zip, types=FILE, size(DATA)=4938, size(STORAGE)=4938, time(CREATE)=Do Sep 06 20:21:11 MESZ 2012, time(READ)=Do Sep 06 20:21:11 MESZ 2012, time(WRITE)=Do Sep 06 20:21:11 MESZ 2012, members=null]

As you can see, that’s a lot more output! Now the TrueZIP Kernel logs a message whenever it opens and closes a node in the (virtual) file system or allocates and releases an I/O buffer (alias a temp file).

Conclusion

Without the TrueVFS Extension Logging, the TrueVFS Kernel logs only basic configuration information about the services it locates on the class path. This should be enough to diagnose problems with the class path setup. If you need some more insight, you can use the TrueVFS Extension Logging to log file system activity, too.

In addition to the TrueVFS Extension Logging, you might want to try the TrueVFS Extension Insight for some nice I/O statistics via JMX.

Enjoy!