-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Replace Layout Renderer
Replaces a string in the output of another layout with another string.
Platforms Supported: All
${replace:searchFor=String:wholeWords=Boolean:replaceWith=String
:ignoreCase=Boolean:inner=Layout}
-
searchFor - Text to search for.
String - replaceWith - Replacement string.
-
ignoreCase - Indicates whether to ignore case when searching.
BooleanDefault:False -
wholeWords - Indicates whether to search for whole words.
BooleanDefault:False
- inner - Wrapped layout. Layout
NLog v6 does not support Regular Expressions (RegEx), and have removed these options:
-
regex - Indicates whether regular expressions should be used when searching.
BooleanDefault:False -
replaceGroupName - Specifies group name for Matched Subexpressions, where it will perform replace of all matches with that group name. Ex.
(?<groupname>subexpression)Introduced with NLog 3.1
-
compileRegex - Compiles the Regex. Setting this to
truecan improve regex performance, but costs memory.BooleanDefault:FalseIntroduced with NLog 4.7
If needing Regular Expressions, then one can use ${regex-replace} from NLog.RegEx-nuget-package.
Replace sensitive data, that starts with password= or password:
<variable name="replacePasswords"
value="${replace:inner=${message}:searchFor=(?i)(?<=password[=\:])(.*?)(?=(\;|$| )):replaceWith=******:regex=true}" />Truncate after token, search for , and replace everything after with empty string:
<variable name="truncateAfterComma"
value="${replace:inner=${aspnet-request-ip}:searchFor=,.*:replaceWith=:regex=true}" />With Regular Expressions keep in mind the content escaping rules to escape special characters in Regex. Specifically } and \. So for example the regular expression (\d{3})+ would need to be escaped like so in your configuration
<variable name="messageNoDigits"
value="${replace:inner=${message}:searchFor=(\\d{3\})+:replaceWith=:regex=true}" />There is a dedicated layout ${replace-newlines} for replacing / removing newlines (handles both Unix and Windows newlines)
- Troubleshooting Guide - See available NLog Targets and Layouts: https://nlog-project.org/config
- Getting started
- How to use structured logging
- Troubleshooting
- FAQ
- Articles about NLog
-
All targets, layouts and layout renderers
Popular: - Using NLog with NLog.config
- Using NLog with appsettings.json