This commit adds first-pass support for more robust plugin log filtering. No changes were made that affect PluginLog's APIs nor log format. This change works by making use of Serilog's "SourceContext" property to attach plugin information to all log messages. The in-game log UI can then be used to filter based on this property. Future expansions for this system include the ability to set different plugins to different log levels (something that already can technically be done, but requires those plugins be hard-coded through MinimumLevel.Override), creating new root loggers for each plugin (thereby giving plugin devs more control over their logging should they want to use it), plus other potential improvements in the way of adding context or rich information. - Update PluginLog to attach a "SourceContext" property to all log messages. - Tweak the SerilogEventSink to pass the original log event around. - Suppress Info/Debug/Verbose exceptions from Troubleshooting reports. - Fix the ConsoleWindow log filter to use _all_ filters, rather than just one. - Add ConsoleWindow dropdown to select plugins to filter logs by - Add support for multiple log levels to ConsoleWindow filtering |
||
|---|---|---|
| .github/workflows | ||
| .nuke | ||
| api | ||
| build | ||
| Dalamud | ||
| Dalamud.Boot | ||
| Dalamud.CorePlugin | ||
| Dalamud.Injector | ||
| Dalamud.Injector.Boot | ||
| Dalamud.Test | ||
| DalamudCrashHandler | ||
| docs | ||
| lib | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| build.cmd | ||
| build.ps1 | ||
| build.sh | ||
| CreateHashList.ps1 | ||
| Dalamud.sln | ||
| Dalamud.sln.DotSettings | ||
| docfx.json | ||
| filterConfig.yml | ||
| global.json | ||
| index.md | ||
| LICENSE | ||
| README.md | ||
| stylecop.json | ||
Dalamud

Dalamud is a plugin development framework for FINAL FANTASY XIV that provides access to game data and native interoperability with the game itself to add functionality and quality-of-life.
It is meant to be used in conjunction with FFXIVQuickLauncher, which manages and launches Dalamud for you. It is generally not recommended for users to try to run Dalamud manually as there are multiple dependencies and assumed folder paths.
Hold Up!
If you are just trying to use Dalamud, you don't need to do anything on this page - please download XIVLauncher from its official page and follow the setup instructions.
Plugin development
Dalamud features a growing API for in-game plugin development with game data and chat access and overlays. Please see our Developer FAQ and the API documentation for more details.
If you need any support regarding the API or usage of Dalamud, please join our discord server.
Thanks to Mino, whose work has made this possible!
Components & Pipeline
These components are used in order to load Dalamud into a target process. Dalamud can be loaded via DLL injection, or by rewriting a process' entrypoint.
| Name | Purpose |
|---|---|
| Dalamud.Injector.Boot (C++) | Loads the .NET Core runtime into a process via hostfxr and kicks off Dalamud.Injector |
| Dalamud.Injector (C#) | Performs DLL injection on the target process |
| Dalamud.Boot (C++) | Loads the .NET Core runtime into the active process and kicks off Dalamud, or rewrites a target process' entrypoint to do so |
| Dalamud (C#) | Core API, game bindings, plugin framework |
| Dalamud.CorePlugin (C#) | Testbed plugin that can access Dalamud internals, to prototype new Dalamud features |
Branches
We are currently working from the following branches.
| Name | Purpose | .NET Version | Track |
|---|---|---|---|
| master | Upgrade to .NET 6 | .NET 6.0.3 (March 2022) | Staging |
| net5 | Current release branch | .NET 5.0.6 (May 2021) | Release |
| api3 | Legacy version, no longer in active use | .NET Framework 4.7.2 (April 2017) | - |