Skip to content

Commit 37d4612

Browse files
committed
Logging updates
1 parent 966850e commit 37d4612

File tree

9 files changed

+114
-104
lines changed

9 files changed

+114
-104
lines changed
Lines changed: 53 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,53 @@
1-
// <copyright file="ControllerTests.cs" company="Rosalind Wills">
2-
// Copyright (c) Rosalind Wills. All rights reserved.
3-
// Licensed under the GPL v3 license. See LICENSE file in the project root for full license information.
4-
// </copyright>
5-
6-
namespace RPThreadTrackerV3.BackEnd.Test.TestHelpers
7-
{
8-
using System;
9-
using System.Security.Claims;
10-
using Microsoft.AspNetCore.Http;
11-
using Microsoft.AspNetCore.Mvc;
12-
13-
public class ControllerTests<T> : IDisposable
14-
where T : Controller, IDisposable
15-
{
16-
protected T Controller { get; set; }
17-
18-
public void Dispose()
19-
{
20-
Dispose(true);
21-
GC.SuppressFinalize(this);
22-
}
23-
24-
/// <summary>
25-
/// Releases unmanaged and - optionally - managed resources.
26-
/// </summary>
27-
/// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
28-
protected virtual void Dispose(bool disposing)
29-
{
30-
if (disposing)
31-
{
32-
Controller?.Dispose();
33-
}
34-
}
35-
36-
protected void InitControllerContext()
37-
{
38-
var user = new ClaimsPrincipal(new ClaimsIdentity(new[]
39-
{
40-
new Claim(ClaimTypes.NameIdentifier, "12345")
41-
}));
42-
Controller.ControllerContext = new ControllerContext
43-
{
44-
HttpContext = new DefaultHttpContext { User = user }
45-
};
46-
}
47-
}
48-
}
1+
// <copyright file="ControllerTests.cs" company="Rosalind Wills">
2+
// Copyright (c) Rosalind Wills. All rights reserved.
3+
// Licensed under the GPL v3 license. See LICENSE file in the project root for full license information.
4+
// </copyright>
5+
6+
namespace RPThreadTrackerV3.BackEnd.Test.TestHelpers
7+
{
8+
using System;
9+
using System.Security.Claims;
10+
using Microsoft.AspNetCore.Http;
11+
using Microsoft.AspNetCore.Mvc;
12+
using Newtonsoft.Json;
13+
14+
public class ControllerTests<T> : IDisposable
15+
where T : Controller, IDisposable
16+
{
17+
protected T Controller { get; set; }
18+
19+
public void Dispose()
20+
{
21+
Dispose(true);
22+
GC.SuppressFinalize(this);
23+
}
24+
25+
/// <summary>
26+
/// Releases unmanaged and - optionally - managed resources.
27+
/// </summary>
28+
/// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
29+
protected virtual void Dispose(bool disposing)
30+
{
31+
if (disposing)
32+
{
33+
Controller?.Dispose();
34+
}
35+
}
36+
37+
protected void InitControllerContext()
38+
{
39+
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
40+
{
41+
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
42+
};
43+
var user = new ClaimsPrincipal(new ClaimsIdentity(new[]
44+
{
45+
new Claim(ClaimTypes.NameIdentifier, "12345")
46+
}));
47+
Controller.ControllerContext = new ControllerContext
48+
{
49+
HttpContext = new DefaultHttpContext { User = user }
50+
};
51+
}
52+
}
53+
}

RPThreadTrackerV3.BackEnd/Controllers/AuthController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ public async Task<IActionResult> ForgotPassword([FromBody] ForgotPasswordRequest
275275
catch (Exception e)
276276
{
277277
_logger.LogError(e, $"Error requesting password reset for {model.Email}");
278-
return StatusCode(500, "An unknown error occurred.");
278+
return StatusCode(500, "An unexpected error occurred.");
279279
}
280280
}
281281

@@ -320,7 +320,7 @@ public async Task<IActionResult> ResetPassword([FromBody] ResetPasswordRequestMo
320320
catch (Exception e)
321321
{
322322
_logger.LogError(e, $"Error requesting password reset for {model.Email}");
323-
return StatusCode(500, "An unknown error occurred.");
323+
return StatusCode(500, "An unexpected error occurred.");
324324
}
325325
}
326326
}

RPThreadTrackerV3.BackEnd/Controllers/CharacterController.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ namespace RPThreadTrackerV3.BackEnd.Controllers
1818
using Microsoft.AspNetCore.Mvc;
1919
using Microsoft.Extensions.Logging;
2020
using Models.ViewModels;
21+
using Newtonsoft.Json;
2122

2223
/// <summary>
2324
/// Controller class for behavior related to a user's characters.
@@ -77,7 +78,7 @@ public IActionResult Get()
7778
catch (Exception e)
7879
{
7980
_logger.LogError(e, e.Message);
80-
return StatusCode(500, "An unknown error occurred.");
81+
return StatusCode(500, "An unexpected error occurred.");
8182
}
8283
}
8384

@@ -100,23 +101,23 @@ public IActionResult Post([FromBody] CharacterDto character)
100101
{
101102
try
102103
{
103-
_logger.LogInformation($"Received request to create new character for user {UserId}");
104+
_logger.LogInformation($"Received request to create new character for user {UserId}. Request body: {JsonConvert.SerializeObject(character)}");
104105
character.AssertIsValid();
105106
character.UserId = UserId;
106107
var model = _mapper.Map<Models.DomainModels.Character>(character);
107108
var createdCharacter = _characterService.CreateCharacter(model, _characterRepository, _mapper);
108-
_logger.LogInformation($"Processed request to create new character for user {UserId}");
109+
_logger.LogInformation($"Processed request to create new character for user {UserId}. Result body: {JsonConvert.SerializeObject(createdCharacter)}");
109110
return Ok(_mapper.Map<CharacterDto>(createdCharacter));
110111
}
111112
catch (InvalidCharacterException)
112113
{
113-
_logger.LogWarning($"User {UserId} attempted to add invalid character {character}.");
114+
_logger.LogWarning($"User {UserId} attempted to add invalid character {JsonConvert.SerializeObject(character)}.");
114115
return BadRequest("The supplied character is invalid.");
115116
}
116117
catch (Exception e)
117118
{
118-
_logger.LogError($"Error creating characted {character}: {e.Message}", e);
119-
return StatusCode(500, "An unknown error occurred.");
119+
_logger.LogError($"Error creating character {JsonConvert.SerializeObject(character)}: {e.Message}", e);
120+
return StatusCode(500, "An unexpected error occurred.");
120121
}
121122
}
122123

@@ -142,17 +143,17 @@ public IActionResult Put(int characterId, [FromBody]CharacterDto character)
142143
{
143144
try
144145
{
145-
_logger.LogInformation($"Received request to update character {characterId} for user {UserId}");
146+
_logger.LogInformation($"Received request to update character {characterId} for user {UserId}. Request body: {JsonConvert.SerializeObject(character)}");
146147
character.AssertIsValid();
147148
_characterService.AssertUserOwnsCharacter(characterId, UserId, _characterRepository);
148149
var model = _mapper.Map<Models.DomainModels.Character>(character);
149150
var updatedCharacter = _characterService.UpdateCharacter(model, _characterRepository, _mapper);
150-
_logger.LogInformation($"Processed request to update character {characterId} for user {UserId}");
151+
_logger.LogInformation($"Processed request to update character {characterId} for user {UserId}. Result body: {JsonConvert.SerializeObject(updatedCharacter)}");
151152
return Ok(_mapper.Map<CharacterDto>(updatedCharacter));
152153
}
153154
catch (InvalidCharacterException)
154155
{
155-
_logger.LogWarning($"User {UserId} attempted to update invalid character {character}.");
156+
_logger.LogWarning($"User {UserId} attempted to update invalid character {JsonConvert.SerializeObject(character)}.");
156157
return BadRequest("The supplied character is invalid.");
157158
}
158159
catch (CharacterNotFoundException)
@@ -162,8 +163,8 @@ public IActionResult Put(int characterId, [FromBody]CharacterDto character)
162163
}
163164
catch (Exception e)
164165
{
165-
_logger.LogError($"Error updating character {character}: {e.Message}", e);
166-
return StatusCode(500, "An unknown error occurred.");
166+
_logger.LogError($"Error updating character {JsonConvert.SerializeObject(character)}: {e.Message}", e);
167+
return StatusCode(500, "An unexpected error occurred.");
167168
}
168169
}
169170

@@ -201,7 +202,7 @@ public IActionResult Delete(int characterId)
201202
catch (Exception e)
202203
{
203204
_logger.LogError($"Error deleting character {characterId}: {e.Message}", e);
204-
return StatusCode(500, "An unknown error occurred.");
205+
return StatusCode(500, "An unexpected error occurred.");
205206
}
206207
}
207208
}

RPThreadTrackerV3.BackEnd/Controllers/ContactController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public async Task<IActionResult> Post([FromBody] ContactFormRequestModel model)
8181
catch (Exception e)
8282
{
8383
_logger.LogError(e, $"Error sending contact form. Message was: {model.Message}. {e}");
84-
return StatusCode(500, "An unknown error occurred.");
84+
return StatusCode(500, "An unexpected error occurred.");
8585
}
8686
}
8787
}

RPThreadTrackerV3.BackEnd/Controllers/ProfileSettingsController.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ namespace RPThreadTrackerV3.BackEnd.Controllers
1717
using Microsoft.Extensions.Logging;
1818
using Models.DomainModels;
1919
using Models.ViewModels;
20+
using Newtonsoft.Json;
2021

2122
/// <summary>
2223
/// Controller class for behavior related to user profile settings.
@@ -79,7 +80,7 @@ public IActionResult Get()
7980
catch (Exception e)
8081
{
8182
_logger.LogError(e, e.Message);
82-
return StatusCode(500, "An unknown error occurred.");
83+
return StatusCode(500, "An unexpected error occurred.");
8384
}
8485
}
8586

@@ -97,7 +98,7 @@ public IActionResult Put([FromBody]ProfileSettingsDto settings)
9798
{
9899
try
99100
{
100-
_logger.LogInformation($"Received request to update profile settings for user {UserId}");
101+
_logger.LogInformation($"Received request to update profile settings for user {UserId}. Request body: {JsonConvert.SerializeObject(settings)}");
101102
var settingsModel = _mapper.Map<ProfileSettings>(settings);
102103
settingsModel.UserId = UserId;
103104
_authService.UpdateProfileSettings(settingsModel, _profileSettingsRepository, _mapper);
@@ -107,7 +108,7 @@ public IActionResult Put([FromBody]ProfileSettingsDto settings)
107108
catch (Exception e)
108109
{
109110
_logger.LogError(e, e.Message);
110-
return StatusCode(500, "An unknown error occurred.");
111+
return StatusCode(500, "An unexpected error occurred.");
111112
}
112113
}
113114
}

RPThreadTrackerV3.BackEnd/Controllers/PublicThreadController.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ namespace RPThreadTrackerV3.BackEnd.Controllers
1919
using Microsoft.Extensions.Logging;
2020
using Models.ViewModels;
2121
using Models.ViewModels.PublicViews;
22+
using Newtonsoft.Json;
2223

2324
/// <summary>
2425
/// Controller class for behavior related to public thread collections.
@@ -103,7 +104,7 @@ public async Task<IActionResult> Get(string username, string slug)
103104
var threads = _threadService.GetThreadsForView(view, _threadRepository, _mapper);
104105
var dtos = _mapper.Map<List<ThreadDto>>(threads);
105106
var collection = new PublicThreadDtoCollection(dtos, viewDto);
106-
_logger.LogInformation($"Processed request to get public threads for view with slug {slug} belonging to user {username}");
107+
_logger.LogInformation($"Processed request to get public threads for view with slug {slug} belonging to user {username}. Found {collection.Threads.Count} threads.");
107108
return Ok(collection);
108109
}
109110
catch (PublicViewNotFoundException)
@@ -114,7 +115,7 @@ public async Task<IActionResult> Get(string username, string slug)
114115
catch (Exception e)
115116
{
116117
_logger.LogError(e, $"Error retrieving threads for public view with slug {slug} and username {username}: {e.Message}");
117-
return StatusCode(500, "An unknown error occurred.");
118+
return StatusCode(500, "An unexpected error occurred.");
118119
}
119120
}
120121

@@ -138,7 +139,7 @@ public IActionResult Post([FromBody] LegacyPublicViewDto model)
138139
{
139140
try
140141
{
141-
_logger.LogInformation($"Received request to get public threads for legacy view with slug {model.Slug} belonging to user {model.UserId}");
142+
_logger.LogInformation($"Received request to get public threads for legacy view with slug {model.Slug} belonging to user {model.UserId}. Request body: {JsonConvert.SerializeObject(model)}");
142143
var characters = _characterService.GetCharacters(model.UserId, _characterRepository, _mapper, false);
143144
var view = _publicViewService.GetViewFromLegacyDto(model, characters);
144145
var threads = _threadService.GetThreadsForView(view, _threadRepository, _mapper);
@@ -150,8 +151,8 @@ public IActionResult Post([FromBody] LegacyPublicViewDto model)
150151
}
151152
catch (Exception e)
152153
{
153-
_logger.LogError(e, $"Error retrieving threads for legacy public view: {model}: {e.Message}");
154-
return StatusCode(500, "An unknown error occurred.");
154+
_logger.LogError(e, $"Error retrieving threads for legacy public view: {JsonConvert.SerializeObject(model)}: {e.Message}");
155+
return StatusCode(500, "An unexpected error occurred.");
155156
}
156157
}
157158
}

0 commit comments

Comments
 (0)