What Changed
We modified the structure of records that we output to the audit log so that these records do not contain data that may be sensitive. See the list below for information on what log records are affected.
-
XPObjectSpace.LockingException
- The"ClassName: {0}. ID: {1}."
format string is replaced with"ClassName: {0}."
.
Set theLogSensitiveDataSettings.XPObjectSpaceLockingException
static field totrue
to use the old string. -
PropertyEditor.OnValueStoring
- The "'{0}' property editor: new value is '{1}'" format string is replaced with "'{0}' property editor value changed".
Set theLogSensitiveDataSettings.PropertyEditorValueStoring
static field totrue
to use the old string. -
WinWindowText
- The"Window closing: {Form.Text}"
and"Window closed: {Form.Text}"
format strings are replaced with"Window closing: {View.Id}"
and"Window closed: {View.Id}"
.
Set theLogSensitiveDataSettings.WinWindowText
static field totrue
to use the old string. -
WinApplication.ProcessCommandLineArguments
- The"Command line arguments"
record is removed.
Set theLogSensitiveDataSettings.WinApplicationCommandLineArguments
static field totrue
to use the old record. -
FileDataInfo
- The"tempDirectory"
and"tempFileName"
records are removed.
Set theLogSensitiveDataSettings.FileDataInfo
static field totrue
to use the old record. -
LogActionInfo
- The"Context.CurrentObject {object.ToString()}"
format string is replaced with"Context.CurrentObject {Guid}
" or removed in the case when the key is not of theGuid
type.
Set theLogSensitiveDataSettings.LogActionInfo
static field totrue
to use the old string. -
ListPropertyEditor.ReadValueCore
- TheListView.CollectionSource.List
value is replaced withListView.CollectionSource.List.GetType().Name
in the"ListView.CollectionSource.List"
record.
Set theLogSensitiveDataSettings.ListPropertyEditorReadValue
static field totrue
to use the old value. -
SettingsStorageOnString.SetContentFromString
- The"Error occurs on parsing key-value string: "
record is removed.
Set theLogSensitiveDataSettings.SettingsStorageLogError
static field totrue
to use the old record. -
DetailView.CurrentObject
- The"CurrentObject {value}"
format string is replaced with"CurrentObject {Guid}"
or removed in the case when the key is not of theGuid
type.
Set theLogSensitiveDataSettings.DetailViewCurrentObject
static field totrue
to use the old string. -
Exception thrown from the
ReportStorageBase.GetReportData
method - The"Invalid url '{url}'."
string is replaced with"Invalid url"
.
Set theLogSensitiveDataSettings.ReportInvalidUrl
static field totrue
to use the old string. -
Exception thrown from the
SecurityModule.ChangePasswordOnLogon
method - theUserName
value in the"Insufficient permissions to change password for the '{UserName}' user"
record is replaced with the user GUID or "*****
" in the case when the key is not of theGuid
type.
Set theLogSensitiveDataSettings.ChangePasswordOnLogonException
static field totrue
to use the old value. -
UserName
inAuthenticationException
- TheUserName
value in the"Login failed for '{UserName}'."
format string is replaced with "*****
".
Set theLogSensitiveDataSettings.AuthenticationExceptionUserName
static field totrue
to use the old value. -
XPObjectSpace.GetObjectKey
- TheObjectKey
value in the"Cannot convert the '{ObjectKey}' value to the type of the '{objectType}' key property type"
format string is replaced with "*****
".
Set theLogSensitiveDataSettings.CannotConvertKeyException
static field totrue
to use the old value. -
All text of the
ValidationException
- All validation exception messages are replaced with"Validation failed"
.
Set theLogSensitiveDataSettings.ValidationException
static field totrue
to use the old records. -
Exception thrown from the
UploadComponentBase.Upload
method - TheFileName
value in the"Cannot upload the selected {FileName} file while another file is uploading."
format string is replaced with "*****
".
Set theLogSensitiveDataSettings.UploadFileException
static field totrue
to use the old value. -
Exception thrown from the
StreamService.GetFileStream
method - The"Cannot find object with '{objectKey}' key."
format string is replaced with"Cannot find object by a key."
.
Set theLogSensitiveDataSettings.GetFileStreamException
static field totrue
to use the old string. -
Exception thrown from the
LastAdminController.CheckLastAdmin
method - The"Cannot find object with '{objectKey}' key."
format string is replaced with"Cannot find object by a key."
Set theLogSensitiveDataSettings.CheckLastAdminException
static field totrue
to use the old string. -
Exception thrown from the
AuthenticationActiveDirectory.Authenticate
method - The"The username ('{userName}') was already registered within the system"
format string is replaced with"A user was already registered within the system"
.
Set theLogSensitiveDataSettings.RegisteredUserException
static field totrue
to use the old string. -
Exception thrown from the
BlazorApplication.OnHandleShortcutProcessingException
method - The object key value is removed from the"An error occurs while processing a shortcut: {shortcut.ToString()}"
record.
Set theLogSensitiveDataSettings.RegisteredUserException
static field totrue
to use the old record. -
Exception thrown from the
LockController.CheckLocking
method - All object data and view data are removed from the record for theSimultaneousChangeDataMessage
exception.
Set theLogSensitiveDataSettings.LockingException
static field totrue
to use the old record. -
Exception thrown from the
XafApplication.CreateViewParameters
method - Object key value is removed from the"An error occurs while processing a shortcut: {0}: {shortcut.ToString()}"
record.
Set theLogSensitiveDataSettings.ShortcutProcessingException
static field totrue
to use the old record. -
Exception thrown from the
ViewShortcutSecurityHelper.GetType
method - Object key value is removed from the"An error occurs while processing a shortcut: {0}: {shortcut.ToString()}"
record.
Set theLogSensitiveDataSettings.ShortcutProcessingException
static field totrue
to use the old record. -
Exception thrown from the
QueryableCollection
constructor - The used criteria is removed from the"The criteria contains properties that are not supported in Queryable mode (Type: {1}, Criteria: \"{0}\")"
record.
Set theLogSensitiveDataSettings.Criteria
static field totrue
to use the old record. -
Exception thrown from the
CollectionSourceBase.ApplyCriteria
method - The used criteria is removed from the"An error occurs while applying the '{Criteria}' criteria: '{e.message}'"
record.
Set theLogSensitiveDataSettings.Criteria
static field totrue
to use the old record. -
Exception thrown from the
ObjectHandleHelper.ParseObjectHandle
method - The"Invalid handle '{handle}'."
format string is replaced with"Invalid handle"
.
Set theLogSensitiveDataSettings.InvalidHandleException
static field totrue
to use the old string. -
Values in
DuplicatedKeyException
- Values are removed from the"Item has already been added."
record.
Set theLogSensitiveDataSettings.DuplicatedKeyException
static field totrue
to use the old record.
Reasons for Change
Log files should not contain sensitive data for security reasons.
Impact on Existing Apps
All sensitive data described above will be removed from the application log file.
How to Revert to Previous Behavior
Set the static Tracing.LogSensitiveData to true
to enable the previous behavior globally (sensitive data will be written in the log file). Alternatively, assign true
to static fields of the DevExpress.Persistent.Base.LogSensitiveDataSettings
class to enable the previous behavior for an exact case):
Blazor
C#// YourSolutionName.Blazor.Server/Program.cs
using DevExpress.ExpressApp;
// ...
public static int Main(string[] arguments) {
// Enable the previous behavior globally:
DevExpress.Persistent.Base.Tracing.LogSensitiveData = true;
// Enable the previous behavior for a single case:
// LogSensitiveDataSettings.ValidationException = true;
// ...
}
// ...
}
Web API Service
C#// YourSolutionName.WebApi/Program.cs
using DevExpress.ExpressApp;
// ...
public static int Main(string[] arguments) {
// Enable the previous behavior globally:
DevExpress.Persistent.Base.Tracing.LogSensitiveData = true;
// Enable the previous behavior for a single case:
// LogSensitiveDataSettings.ValidationException = true;
// ...
}
// ...
}
WinForms
C#// YourSolutionName.Win/Program.cs
using DevExpress.ExpressApp;
// ...
public class Program {
public static int Main(string[] arguments) {
// Enable the previous behavior globally:
DevExpress.Persistent.Base.Tracing.LogSensitiveData = true;
// Enable the previous behavior for a single case:
// LogSensitiveDataSettings.ValidationException = true;
// ...
}
// ...
}
ASP.NET WebForms
C#// YourSolutionName.Web/Global.asax.cs
using DevExpress.ExpressApp;
// ...
public class Global : HttpApplication {
protected void Application_Start(object sender, EventArgs e) {
// Enable the previous behavior globally:
DevExpress.Persistent.Base.Tracing.LogSensitiveData = true;
// Enable the previous behavior for a single case:
// LogSensitiveDataSettings.ValidationException = true;
// ...
}
// ...
}