Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
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
33 changes: 19 additions & 14 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
# 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

# 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
82 changes: 82 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# 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).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a specific NI package or VIP for the NI Actor Framework? I thought it was just an organization of LabVIEW classes, libraries, and projects.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NI Actor Framework ships with every version of LabVIEW, so it should be covered by the LabVIEW dependency in the line above. I can clarify the documentation to indicate as much.

- Caraya, for the test suite only (not required at runtime).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to change "Caraya" to a link?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean include a URL such as (https://www.jki.net/caraya)?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


## 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:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once there is some implementation, a VI snippet/PNG for the Quick Start would be good.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding a @todo in the documentation so I don't forget..


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.

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
Comment thread
volks73 marked this conversation as resolved.
Outdated
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
Comment thread
volks73 marked this conversation as resolved.
Outdated
`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).
Binary file added docs/Lumberjack-API-Guide.docx
Comment thread
volks73 marked this conversation as resolved.
Outdated
Binary file not shown.
Loading