Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .Lumberjack.UserState/debug.lvprojstate
Comment thread
volks73 marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<Configuration>
<Target name="My Computer">
<EnableDebuggingForAllVIs>0</EnableDebuggingForAllVIs>
</Target>
</Configuration>
26 changes: 26 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Normalize line endings for text files; binaries are marked explicitly below.
* text=auto

# --- LabVIEW source files ---
# These are binary, or XML that must NOT be auto-merged (git merges corrupt
# them). Use NI LVCompare / LVMerge to diff and merge visually.
*.vi binary
*.vit binary
*.vim binary
*.ctl binary
*.ctt binary
*.llb binary
*.lvclass binary
*.lvlib binary
*.lvproj binary
*.lvlibp binary
*.mnu binary

# --- Documentation and diagram artifacts ---
*.docx binary
*.pdf binary
*.png binary

# --- Text sources ---
*.md text eol=lf
*.json text eol=lf
34 changes: 20 additions & 14 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
# Libraries
*.lvlibp
*.llb
# --- LabVIEW ---
# Object cache and per-user settings (regenerable)
.cache/
*.aliases
*.lvlps

# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# --- Build outputs (regenerable, not committed) ---
/builds/
*.lvlibp # Packed Project Library (output of Build PPL)
*.vip # VI Package (output of Package)

# Executables
*.exe
# --- OS / editor cruft ---
.DS_Store
Thumbs.db
desktop.ini
*~
*.tmp
*.zip

# Metadata
*.aliases
*.lvlps
.cache/
# --- Rendered docs are artifacts of the Markdown sources ---
# Uncomment if you prefer to regenerate rather than commit them:
docs/*.docx
docs/*.pdf
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause License

Copyright (c) 2023, Field R&D Services
Copyright (c) 2026, Field R&D Services

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Expand Down
18 changes: 18 additions & 0 deletions Lumberjack.lvproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<Project Type="Project" LVVersion="26008000">
<Property Name="NI.LV.All.SaveVersion" Type="Str">26.0</Property>
<Property Name="NI.LV.All.SourceOnly" Type="Bool">true</Property>
<Item Name="My Computer" Type="My Computer">
<Property Name="server.app.propertiesEnabled" Type="Bool">true</Property>
<Property Name="server.control.propertiesEnabled" Type="Bool">true</Property>
<Property Name="server.tcp.enabled" Type="Bool">false</Property>
<Property Name="server.tcp.port" Type="Int">0</Property>
<Property Name="server.tcp.serviceName" Type="Str">My Computer/VI Server</Property>
<Property Name="server.tcp.serviceName.default" Type="Str">My Computer/VI Server</Property>
<Property Name="server.vi.callsEnabled" Type="Bool">true</Property>
<Property Name="server.vi.propertiesEnabled" Type="Bool">true</Property>
<Property Name="specify.custom.address" Type="Bool">false</Property>
<Item Name="Dependencies" Type="Dependencies"/>
<Item Name="Build Specifications" Type="Build"/>
</Item>
</Project>
89 changes: 89 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Lumberjack

An Actor Framework logging library for LabVIEW: a log4j-style logger with
severity levels, pluggable appenders, per-appender filtering and routing, and
non-blocking asynchronous delivery. It is a redesign of the earlier singleton
"Logger" library on top of the NI Actor Framework.

**Status:** design complete; implementation in progress (see the build
checklist).

## Requirements

- LabVIEW 2014 or newer (native JSON and the Actor Framework).
- NI Actor Framework (the only runtime dependency).
Comment thread
volks73 marked this conversation as resolved.
Outdated
- Caraya, for the test suite only (not required at runtime).
Comment thread
volks73 marked this conversation as resolved.
Outdated

## What it does

- Six severity levels (Fatal, Error, Warn, Info, Debug, Trace) with a global
threshold and per-appender thresholds.
- Appenders are independent actors: file (rolling, retained), console, and a
relay that hands statements back to your application.
- Two-stage filtering: a coarse global gate on the caller side, then an
authoritative per-appender threshold and selection filter (mirror, or routed
by level range and hierarchical source tag).
- Non-blocking delivery with optional bounded queues and drop policies.
- Singleton by default (log from anywhere with no handle) with an optional
instance API.

## Quick start

Singleton style, three nodes:
Comment thread
volks73 marked this conversation as resolved.

1. `Initialize` at application start.
2. `Info`, `Error`, etc. anywhere, with a message string. No handle needed.
3. `Shutdown` at exit to flush and close.

@TODO - Include a VI snippet/PNG when available

See the API and Usage Guide for configuration, appenders, routing, and the
instance API.

## Repository layout

```
src/ the Lumberjack.lvlib and all classes, types, and support VIs
docs/ specification and guides (Markdown source; .docx are rendered)
examples/ runnable usage examples
tests/ Caraya unit and integration tests
scripts/ build, package, and test runners
configs/ VI Package build spec
```

The full layout, element-to-path mapping, and packaging notes are in the Design
Document, section 8.

## Documentation

Markdown is the source of truth; the `.docx` files are rendered from it.

- Requirements:
[`docs/Lumberjack-Requirements.md`](docs/Lumberjack-Requirements.md)
- Design: [`docs/Lumberjack-Design.md`](docs/Lumberjack-Design.md)
- API and usage: [`docs/Lumberjack-API-Guide.md`](docs/Lumberjack-API-Guide.md)
- Message and class reference:
[`docs/Lumberjack-Class-Reference.md`](docs/Lumberjack-Class-Reference.md)
- Test strategy:
[`docs/Lumberjack-Test-Strategy.md`](docs/Lumberjack-Test-Strategy.md)
- Build checklist:
[`docs/Lumberjack-Build-Checklist.md`](docs/Lumberjack-Build-Checklist.md)

## Building and testing

- Build the packed library with `scripts/Build PPL.vi`, the VI Package with
`scripts/Package.vi`, and a source distribution with `scripts/Build.vi`.
- Run the test suite with `scripts/Test.vi` (Caraya). Unit tests cover the pure
VIs; integration tests use a relay-queue capture probe.

## Working with the source in git

LabVIEW files are marked binary in `.gitattributes` because git cannot safely
merge them. Use NI **LVCompare** and **LVMerge** to diff and merge VIs and
classes visually. Build outputs (`.lvlibp`, `.vip`) and LabVIEW caches are
ignored; see `.gitignore`.

## License

3-clause BSD. See [`docs/LICENSE.txt`](docs/LICENSE.txt). Change history is in
[`docs/CHANGELOG.md`](docs/CHANGELOG.md).
Loading