diff --git a/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml.cs b/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml.cs index 24e5cfdfab..97ddc15000 100644 --- a/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml.cs +++ b/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml.cs @@ -14,9 +14,6 @@ namespace Content.Client.Administration.UI.Notes; [GenerateTypedNameReferences] public sealed partial class AdminNotesLine : BoxContainer { - [Dependency] private readonly ILogManager _logManager = default!; - - private readonly ISawmill _sawmill = default!; private readonly SpriteSystem _sprites; private const string AdminNotesTextureBase = "/Textures/Interface/AdminNotes/"; @@ -36,8 +33,6 @@ public sealed partial class AdminNotesLine : BoxContainer public AdminNotesLine(SpriteSystem sprites, SharedAdminNote note) { RobustXamlLoader.Load(this); - - _sawmill = _logManager.GetSawmill("admin.notes"); _sprites = sprites; Note = note; @@ -66,7 +61,7 @@ public sealed partial class AdminNotesLine : BoxContainer if (iconPath is null) { SeverityRect.Visible = false; - _sawmill.Warning($"Could not find an icon for note ID {Note.Id}"); + Logger.WarningS("admin.notes", $"Could not find an icon for note ID {Note.Id}"); } else { diff --git a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs index d640de7b68..d5fee2bdda 100644 --- a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs +++ b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs @@ -30,10 +30,8 @@ namespace Content.Client.Construction.UI [Dependency] private readonly IUserInterfaceManager _uiManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IClientPreferencesManager _preferencesManager = default!; - [Dependency] private readonly ILogManager _logManager = default!; - - private readonly ISawmill _sawmill = default!; private readonly SpriteSystem _spriteSystem; + private readonly IConstructionMenuView _constructionView; private readonly EntityWhitelistSystem _whitelistSystem; @@ -89,8 +87,6 @@ namespace Content.Client.Construction.UI { // This is a lot easier than a factory IoCManager.InjectDependencies(this); - _sawmill = _logManager.GetSawmill("construction.menu"); - _constructionView = new ConstructionMenu(); _whitelistSystem = _entManager.System(); _spriteSystem = _entManager.System(); @@ -288,7 +284,7 @@ namespace Content.Client.Construction.UI if (!_constructionSystem!.TryGetRecipePrototype(recipe.ID, out var targetProtoId)) { - _sawmill.Error("Cannot find the target prototype in the recipe cache with the id \"{0}\" of {1}.", + Logger.Error("Cannot find the target prototype in the recipe cache with the id \"{0}\" of {1}.", recipe.ID, nameof(ConstructionPrototype)); continue; diff --git a/Content.Client/Guidebook/DocumentParsingManager.cs b/Content.Client/Guidebook/DocumentParsingManager.cs index 37ec1ac2de..1727ae0de0 100644 --- a/Content.Client/Guidebook/DocumentParsingManager.cs +++ b/Content.Client/Guidebook/DocumentParsingManager.cs @@ -7,6 +7,7 @@ using Robust.Client.UserInterface; using Robust.Shared.ContentPack; using Robust.Shared.Prototypes; using Robust.Shared.Reflection; +using Robust.Shared.Sandboxing; using Robust.Shared.Utility; using static Pidgin.Parser; @@ -20,7 +21,7 @@ public sealed partial class DocumentParsingManager [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IReflectionManager _reflectionManager = default!; [Dependency] private readonly IResourceManager _resourceManager = default!; - [Dependency] private readonly IDynamicTypeFactory _dynamicTypeFactory = default!; + [Dependency] private readonly ISandboxHelper _sandboxHelper = default!; private readonly Dictionary> _tagControlParsers = new(); private Parser _controlParser = default!; @@ -42,7 +43,7 @@ public sealed partial class DocumentParsingManager foreach (var typ in _reflectionManager.GetAllChildren()) { - _tagControlParsers.Add(typ.Name, CreateTagControlParser(typ.Name, typ, _dynamicTypeFactory)); + _tagControlParsers.Add(typ.Name, CreateTagControlParser(typ.Name, typ, _sandboxHelper)); } ControlParser = whitespaceAndCommentParser.Then(_controlParser.Many()); @@ -86,14 +87,14 @@ public sealed partial class DocumentParsingManager return true; } - private Parser CreateTagControlParser(string tagId, Type tagType, IDynamicTypeFactory typeFactory) + private Parser CreateTagControlParser(string tagId, Type tagType, ISandboxHelper sandbox) { return Map( (args, controls) => { try { - var tag = (IDocumentTag) typeFactory.CreateInstance(tagType); + var tag = (IDocumentTag) sandbox.CreateInstance(tagType); if (!tag.TryParseTag(args, out var control)) { _sawmill.Error($"Failed to parse {tagId} args"); diff --git a/Content.Client/Guidebook/Richtext/Table.cs b/Content.Client/Guidebook/Richtext/Table.cs index 82b884aa96..b6923c3698 100644 --- a/Content.Client/Guidebook/Richtext/Table.cs +++ b/Content.Client/Guidebook/Richtext/Table.cs @@ -8,11 +8,6 @@ namespace Content.Client.Guidebook.Richtext; [UsedImplicitly] public sealed class Table : TableContainer, IDocumentTag { - [Dependency] private readonly ILogManager _logManager = default!; - - private ISawmill Sawmill => _sawmill ??= _logManager.GetSawmill("table"); - private ISawmill? _sawmill; - public bool TryParseTag(Dictionary args, [NotNullWhen(true)] out Control? control) { HorizontalExpand = true; @@ -20,7 +15,7 @@ public sealed class Table : TableContainer, IDocumentTag if (!args.TryGetValue("Columns", out var columns) || !int.TryParse(columns, out var columnsCount)) { - Sawmill.Error("Guidebook tag \"Table\" does not specify required property \"Columns.\""); + Logger.Error("Guidebook tag \"Table\" does not specify required property \"Columns.\""); control = null; return false; } diff --git a/Content.Client/Guidebook/Richtext/TextLinkTag.cs b/Content.Client/Guidebook/Richtext/TextLinkTag.cs index 5c0098d5b5..a551b18473 100644 --- a/Content.Client/Guidebook/Richtext/TextLinkTag.cs +++ b/Content.Client/Guidebook/Richtext/TextLinkTag.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using JetBrains.Annotations; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; @@ -12,11 +12,6 @@ namespace Content.Client.Guidebook.RichText; [UsedImplicitly] public sealed class TextLinkTag : IMarkupTagHandler { - [Dependency] private readonly ILogManager _logManager = default!; - - private ISawmill Sawmill => _sawmill ??= _logManager.GetSawmill(Name); - private ISawmill? _sawmill; - public static Color LinkColor => Color.CornflowerBlue; public string Name => "textlink"; @@ -58,7 +53,7 @@ public sealed class TextLinkTag : IMarkupTagHandler if (control.TryGetParentHandler(out var handler)) handler.HandleClick(link); else - Sawmill.Warning("Warning! No valid ILinkClickHandler found."); + Logger.Warning("Warning! No valid ILinkClickHandler found."); } } diff --git a/Content.Client/Launcher/LauncherConnecting.cs b/Content.Client/Launcher/LauncherConnecting.cs index 3496c92aba..33d31cc52d 100644 --- a/Content.Client/Launcher/LauncherConnecting.cs +++ b/Content.Client/Launcher/LauncherConnecting.cs @@ -20,9 +20,7 @@ namespace Content.Client.Launcher [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IClipboardManager _clipboard = default!; - [Dependency] private readonly ILogManager _logManager = default!; - private ISawmill _sawmill = default!; private LauncherConnectingGui? _control; private Page _currentPage; @@ -61,8 +59,6 @@ namespace Content.Client.Launcher protected override void Startup() { - _sawmill = _logManager.GetSawmill("launcher-ui"); - _control = new LauncherConnectingGui(this, _random, _prototypeManager, _cfg, _clipboard); _userInterfaceManager.StateRoot.AddChild(_control); @@ -119,12 +115,12 @@ namespace Content.Client.Launcher } else { - _sawmill.Info($"Redial not possible, no Ss14Address"); + Logger.InfoS("launcher-ui", $"Redial not possible, no Ss14Address"); } } catch (Exception ex) { - _sawmill.Error($"Redial exception: {ex}"); + Logger.ErrorS("launcher-ui", $"Redial exception: {ex}"); } return false; } diff --git a/Content.Client/UserInterface/Systems/Alerts/Widgets/AlertsUI.xaml.cs b/Content.Client/UserInterface/Systems/Alerts/Widgets/AlertsUI.xaml.cs index 9d62f0c9be..d6a79a81c4 100644 --- a/Content.Client/UserInterface/Systems/Alerts/Widgets/AlertsUI.xaml.cs +++ b/Content.Client/UserInterface/Systems/Alerts/Widgets/AlertsUI.xaml.cs @@ -14,18 +14,12 @@ namespace Content.Client.UserInterface.Systems.Alerts.Widgets; [GenerateTypedNameReferences] public sealed partial class AlertsUI : UIWidget { - [Dependency] private readonly ILogManager _logManager = default!; - - private readonly ISawmill _sawmill = default!; - // also known as Control.Children? private readonly Dictionary _alertControls = new(); public AlertsUI() { RobustXamlLoader.Load(this); - - _sawmill = _logManager.GetSawmill("alertsui"); } public void SyncControls(AlertsSystem alertsSystem, @@ -84,15 +78,15 @@ public sealed partial class AlertsUI : UIWidget { if (!alertKey.AlertType.HasValue) { - _sawmill.Warning("found alertkey without alerttype," + - " alert keys should never be stored without an alerttype set: {0}", alertKey); + Logger.WarningS("alert", "found alertkey without alerttype," + + " alert keys should never be stored without an alerttype set: {0}", alertKey); continue; } var alertType = alertKey.AlertType.Value; if (!alertsSystem.TryGet(alertType, out var newAlert)) { - _sawmill.Error("Unrecognized alertType {0}", alertType); + Logger.ErrorS("alert", "Unrecognized alertType {0}", alertType); continue; } diff --git a/Content.Replay/Menu/ReplayMainMenu.cs b/Content.Replay/Menu/ReplayMainMenu.cs index 5adb769942..85c39c59da 100644 --- a/Content.Replay/Menu/ReplayMainMenu.cs +++ b/Content.Replay/Menu/ReplayMainMenu.cs @@ -33,9 +33,7 @@ public sealed class ReplayMainScreen : State [Dependency] private readonly IClientRobustSerializer _serializer = default!; [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; [Dependency] private readonly ContentReplayPlaybackManager _replayMan = default!; - [Dependency] private readonly ILogManager _logManager = default!; - private ISawmill _sawmill = default!; private ReplayMainMenuControl _mainMenuControl = default!; private SelectReplayWindow? _selectWindow; private ResPath _directory; @@ -44,8 +42,6 @@ public sealed class ReplayMainScreen : State protected override void Startup() { - _sawmill = _logManager.GetSawmill("replay.screen"); - _mainMenuControl = new(_resourceCache); _userInterfaceManager.StateRoot.AddChild(_mainMenuControl); @@ -267,7 +263,7 @@ public sealed class ReplayMainScreen : State } catch (Exception ex) { - _sawmill.Error($"Failed to load replay info. Exception: {ex}"); + Logger.Error($"Failed to load replay info. Exception: {ex}"); SelectReplay(null); return; } diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index a37c05336f..c62a10ada3 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -1,3 +1,6 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.InteropServices; using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Administration.Systems; @@ -15,9 +18,6 @@ using Robust.Shared.Network; using Robust.Shared.Player; using Robust.Shared.Replays; using Robust.Shared.Utility; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Runtime.InteropServices; namespace Content.Server.Chat.Managers; @@ -45,7 +45,6 @@ internal sealed partial class ChatManager : IChatManager [Dependency] private readonly PlayerRateLimitManager _rateLimitManager = default!; [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly DiscordChatLink _discordLink = default!; - [Dependency] private readonly ILogManager _logManager = default!; /// /// The maximum length a player-sent message can be sent @@ -55,7 +54,6 @@ internal sealed partial class ChatManager : IChatManager private bool _oocEnabled = true; private bool _adminOocEnabled = true; - private ISawmill _sawmill = default!; private readonly Dictionary _players = new(); public void Initialize() @@ -66,8 +64,6 @@ internal sealed partial class ChatManager : IChatManager _configurationManager.OnValueChanged(CCVars.OocEnabled, OnOocEnabledChanged, true); _configurationManager.OnValueChanged(CCVars.AdminOocEnabled, OnAdminOocEnabledChanged, true); - _sawmill = _logManager.GetSawmill("SERVER"); - RegisterRateLimits(); } @@ -115,7 +111,7 @@ internal sealed partial class ChatManager : IChatManager { var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", FormattedMessage.EscapeText(message))); ChatMessageToAll(ChatChannel.Server, message, wrappedMessage, EntityUid.Invalid, hideChat: false, recordReplay: true, colorOverride: colorOverride); - _sawmill.Info(message); + Logger.InfoS("SERVER", message); _adminLogger.Add(LogType.Chat, LogImpact.Low, $"Server announcement: {message}"); } diff --git a/Content.Server/GameTicking/Commands/JoinGameCommand.cs b/Content.Server/GameTicking/Commands/JoinGameCommand.cs index bfb3d91464..a32a2f9495 100644 --- a/Content.Server/GameTicking/Commands/JoinGameCommand.cs +++ b/Content.Server/GameTicking/Commands/JoinGameCommand.cs @@ -13,14 +13,11 @@ namespace Content.Server.GameTicking.Commands [AnyCommand] sealed class JoinGameCommand : IConsoleCommand { - [Dependency] private readonly ILogManager _logManager = default!; [Dependency] private readonly IEntityManager _entManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; - private readonly ISawmill _sawmill = default!; - public string Command => "joingame"; public string Description => ""; public string Help => ""; @@ -28,8 +25,6 @@ namespace Content.Server.GameTicking.Commands public JoinGameCommand() { IoCManager.InjectDependencies(this); - - _sawmill = _logManager.GetSawmill("security"); } public void Execute(IConsoleShell shell, string argStr, string[] args) { @@ -51,7 +46,7 @@ namespace Content.Server.GameTicking.Commands if (ticker.PlayerGameStatuses.TryGetValue(player.UserId, out var status) && status == PlayerGameStatus.JoinedGame) { - _sawmill.Info($"{player.Name} ({player.UserId}) attempted to latejoin while in-game."); + Logger.InfoS("security", $"{player.Name} ({player.UserId}) attempted to latejoin while in-game."); shell.WriteError($"{player.Name} is not in the lobby. This incident will be reported."); return; }