{"action":"created","comment":{"url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/comments/38958378","id":38958378,"diff_hunk":"@@ -61,7 +88,9 @@ public void WriteError(string message)\n         [Event(5, Level = EventLevel.Critical)]\n         public void WriteCritical(string message)\n         {\n-            if (_logLevel >= EventLevel.Error)\n+            message = PrepareMessage(message, EventLevel.Critical);\n+\n+            if (IsEnabled() && _logLevel >= EventLevel.Error)","path":"src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs","position":83,"original_position":83,"commit_id":"de50d81a057e6dc6de9bb91f818d5427269f75a9","original_commit_id":"de50d81a057e6dc6de9bb91f818d5427269f75a9","user":{"login":"brentschmaltz","id":3172421,"avatar_url":"https://avatars.githubusercontent.com/u/3172421?v=3","gravatar_id":"","url":"https://api.github.com/users/brentschmaltz","html_url":"https://github.com/brentschmaltz","followers_url":"https://api.github.com/users/brentschmaltz/followers","following_url":"https://api.github.com/users/brentschmaltz/following{/other_user}","gists_url":"https://api.github.com/users/brentschmaltz/gists{/gist_id}","starred_url":"https://api.github.com/users/brentschmaltz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brentschmaltz/subscriptions","organizations_url":"https://api.github.com/users/brentschmaltz/orgs","repos_url":"https://api.github.com/users/brentschmaltz/repos","events_url":"https://api.github.com/users/brentschmaltz/events{/privacy}","received_events_url":"https://api.github.com/users/brentschmaltz/received_events","type":"User","site_admin":false},"body":"should this be: EventLevel >= EventLevel.Critical?","created_at":"2015-09-08T17:58:54Z","updated_at":"2015-09-08T17:58:54Z","html_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38958378","pull_request_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238","_links":{"self":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/comments/38958378"},"html":{"href":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38958378"},"pull_request":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238"}}},"pull_request":{"url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238","id":43464163,"html_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238","diff_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238.diff","patch_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238.patch","issue_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/238","number":238,"state":"open","locked":false,"title":"Logging Changes","user":{"login":"tushargupta51","id":803796,"avatar_url":"https://avatars.githubusercontent.com/u/803796?v=3","gravatar_id":"","url":"https://api.github.com/users/tushargupta51","html_url":"https://github.com/tushargupta51","followers_url":"https://api.github.com/users/tushargupta51/followers","following_url":"https://api.github.com/users/tushargupta51/following{/other_user}","gists_url":"https://api.github.com/users/tushargupta51/gists{/gist_id}","starred_url":"https://api.github.com/users/tushargupta51/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tushargupta51/subscriptions","organizations_url":"https://api.github.com/users/tushargupta51/orgs","repos_url":"https://api.github.com/users/tushargupta51/repos","events_url":"https://api.github.com/users/tushargupta51/events{/privacy}","received_events_url":"https://api.github.com/users/tushargupta51/received_events","type":"User","site_admin":false},"body":"Fixes #221 \r\n1. Renamed ErrorMessages.cs to LogMessages.cs. It still lives in System.IM.Tokens, haven't split it into different projects, maybe we dont need to do that?\r\n2. Moved hardcoded log messages to LogMessages.cs\r\n3. Created default event listener that writes to a file or a fileStream and added test for that.\r\n4. Cleanup - copyrights, saml tests etc.\n<a href='#crh-start'></a><a href='#crh-data-%7B%22processed%22%3A%20%5B%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23issuecomment-135204769%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38236467%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237068%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237399%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237433%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237459%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38238222%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38238433%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38238939%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38239092%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38239161%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38239547%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38240913%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38245185%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38370051%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38446524%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38446705%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38473660%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38958028%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38958162%22%2C%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38958298%22%5D%2C%20%22comments%22%3A%20%7B%22General%20Comment%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23issuecomment-135204769%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%40brentschmaltz%20%22%2C%20%22created_at%22%3A%20%222015-08-26T23%3A29%3A12Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/803796%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tushargupta51%22%7D%7D%5D%2C%20%22title%22%3A%20%22General%20Comment%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2067%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237068%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22you%20can%27t%20call%20.Dispose%20on%20the%20_streamWriter%20or%20_fileStream%20as%20you%20may%20not%20own%20them.%5Cr%5CnHowever%2C%20I%20don%27t%20think%20we%20should%20have%20the%20Constructor%20that%20takes%20a%20FileStream.%22%2C%20%22created_at%22%3A%20%222015-08-28T19%3A48%3A40Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%2C%20%7B%22body%22%3A%20%22Why%20we%20may%20not%20own%20them%2C%20they%20are%20private%20variables%3F%22%2C%20%22created_at%22%3A%20%222015-08-28T20%3A07%3A37Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/803796%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tushargupta51%22%7D%7D%2C%20%7B%22body%22%3A%20%22_streamWriter.Dispose%20should%20call%20Flush%20before%20Dispose.%22%2C%20%22created_at%22%3A%20%222015-08-28T20%3A14%3A36Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-72%22%7D%2C%20%22Pull%20de50d81a057e6dc6de9bb91f818d5427269f75a9%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%2081%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38958298%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Should%20we%20call%20PrepareMessage%20inside%3A%20if%20%28IsEnabled%28%29%20...%29%3F%22%2C%20%22created_at%22%3A%20%222015-09-08T17%3A58%3A21Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%3AL88-97%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2047%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237433%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22null%20check%2C%20comments%22%2C%20%22created_at%22%3A%20%222015-08-28T19%3A52%3A25Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20think%20replacing%20the%20%28Stream%29%20ctor%20with%20%28StreamWriter%29%20makes%20sense.%22%2C%20%22created_at%22%3A%20%222015-08-28T20%3A10%3A23Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/803796%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tushargupta51%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-72%22%7D%2C%20%22Pull%206537acca1185c44a05fd4cabc93d4dc7ef9e51d8%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%2099%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38446524%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Datetime%20should%20be%20UTCNow%22%2C%20%22created_at%22%3A%20%222015-09-01T17%3A26%3A52Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%3AL141-158%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2054%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237459%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22null%20check%22%2C%20%22created_at%22%3A%20%222015-08-28T19%3A52%3A38Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-72%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2040%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38236467%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Need%20null%20check%2C%20comments.%22%2C%20%22created_at%22%3A%20%222015-08-28T19%3A41%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-72%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/System.IdentityModel.Tokens/LogMessages.cs%205%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38238222%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22One%20way%20to%20think%20about%20splitting%20this%20up%20is%20to%20have%20each%20assembly%20own%20their%20logging%20messages.%20So%20S.IM.Tokens%20has%20S.IM.Tokens/LogMessages.cs%2C%20etc.%22%2C%20%22created_at%22%3A%20%222015-08-28T19%3A59%3A43Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%2C%20%7B%22body%22%3A%20%22That%20was%20in%20the%20initial%20plan%20for%20this%20PR.%20But%20some%20messages%20are%20overlapping%20across%20different%20projects.%20That%20can%20result%20in%20some%20redundancy.%20Though%20I%20created%20a%20separate%20one%20for%20M.IM.Logging%20since%20that%20cannot%20take%20a%20dependency%20on%20S.IM.Tokens.%20I%20will%20try%20to%20separate%20them%20out%2C%20that%27s%20better%20than%20having%20it%20all%20in%20one.%22%2C%20%22created_at%22%3A%20%222015-08-28T20%3A30%3A23Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/803796%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tushargupta51%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20opened%20up%20a%20beta%208%20issue%20for%20this.%20https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/240%22%2C%20%22created_at%22%3A%20%222015-08-31T23%3A00%3A55Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/803796%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tushargupta51%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/System.IdentityModel.Tokens/LogMessages.cs%3AL19-28%22%7D%2C%20%22Pull%20de50d81a057e6dc6de9bb91f818d5427269f75a9%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%20101%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38958028%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20would%20recommend%20a%20slight%20coding%20change%20to%20remove%20local%20variables%20and%20string%20copies.%5Cr%5Cn%5Cr%5Cnreturn%20string.Format%28CultureInfo.InvariantCulture%2C%20%5C%22...%5C%22%2C%20level.ToString%28%29%2C%20DateTime.UtcNow%2C%20message%29%3B%22%2C%20%22created_at%22%3A%20%222015-09-08T17%3A56%3A17Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%3AL141-158%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2029%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38238433%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Suggest%20adding%20a%20static%20property%3A%20string%20DefaultLogFileName%7Bget%3B%7D%20so%20users%20can%20find%20the%20file%20name%20easily.%22%2C%20%22created_at%22%3A%20%222015-08-28T20%3A02%3A00Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-72%22%7D%2C%20%22Pull%206537acca1185c44a05fd4cabc93d4dc7ef9e51d8%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2038%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38446705%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22What%20happens%20if%20the%20file%20cannot%20be%20opened%20or%20created%3F%22%2C%20%22created_at%22%3A%20%222015-09-01T17%3A28%3A20Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%2C%20%7B%22body%22%3A%20%22It%20will%20throw%20exception.%3A%20System.UnauthorizedAccessException%20%28when%20file%20cannot%20be%20written%29%20or%20System.IO.IOException%20%28when%20it%20cannot%20create%20new%29.%22%2C%20%22created_at%22%3A%20%222015-09-01T21%3A20%3A12Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/803796%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tushargupta51%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-102%22%7D%2C%20%22Pull%20de50d81a057e6dc6de9bb91f818d5427269f75a9%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%2093%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38958162%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22What%20happens%20if%20%27level%27%20is%20out%20of%20range%3F%20%22%2C%20%22created_at%22%3A%20%222015-09-08T17%3A57%3A18Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs%3AL141-158%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2031%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38237399%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22I%20don%27t%20think%20we%20need%20%20_fileStream%20or%20_filePath%20variables.%20Use%20them%20in%20the%20constructor%20to%20build%20the%20StreamWriter.%22%2C%20%22created_at%22%3A%20%222015-08-28T19%3A52%3A02Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-72%22%7D%2C%20%22Pull%20dbc39dded082a81eb9b19b764e1a2fdde499a305%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%2030%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238%23discussion_r38239092%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22In%20order%20for%20all%20logs%20to%20be%20written%2C%20the%20stream%20writer%20needs%20to%20be%20flushed.%20%5Cr%5CnUsers%20could%20have%20used%20the%20constructor%20that%20takes%20a%20StreamWriter%2C%20they%20should%20have%20set%20%27AutoFlush%27.%20We%20should%20set%20%27AutoFlush%27%20by%20default.%20Question%20is%2C%20do%20we%20need%20a%20way%20for%20users%20to%20control%20this%3F%22%2C%20%22created_at%22%3A%20%222015-08-28T20%3A09%3A27Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/3172421%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/brentschmaltz%22%7D%7D%2C%20%7B%22body%22%3A%20%22I%20created%20a%20bool%20_disposeStreamWriter%20which%20is%20set%20to%20false%20when%20users%20use%20the%20ctor%20that%20takes%20a%20StreamWriter.%20We%20should%20always%20be%20flushing%20the%20streamWriter%20before%20disposing%20the%20TextWriterEventListener%20object.%20I%20don%27t%20think%20we%20need%20to%20%27AutoFlush%27%20property.%20Is%20there%20a%20scenario%20where%20not%20flushing%20the%20streamwriter%20makes%20sense%3F%22%2C%20%22created_at%22%3A%20%222015-08-28T21%3A16%3A14Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars.githubusercontent.com/u/803796%3Fv%3D3%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/tushargupta51%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs%3AL1-72%22%7D%7D%7D'></a>\n<a href='https://www.codereviewhub.com/'><img src='http://www.codereviewhub.com/site/github-bar.png' height=40></a>\n- [ ] <a href='#crh-comment-General Comment'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#issuecomment-135204769'>General Comment</a></b>\n- <a href='https://github.com/tushargupta51'><img border=0 src='https://avatars.githubusercontent.com/u/803796?v=3' height=16 width=16'></a> @brentschmaltz\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 40'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38236467'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-72</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> Need null check, comments.\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 67'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38237068'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-72</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> you can't call .Dispose on the _streamWriter or _fileStream as you may not own them.\nHowever, I don't think we should have the Constructor that takes a FileStream.\n- <a href='https://github.com/tushargupta51'><img border=0 src='https://avatars.githubusercontent.com/u/803796?v=3' height=16 width=16'></a> Why we may not own them, they are private variables?\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> _streamWriter.Dispose should call Flush before Dispose.\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 31'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38237399'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-72</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> I don't think we need  _fileStream or _filePath variables. Use them in the constructor to build the StreamWriter.\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 47'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38237433'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-72</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> null check, comments\n- <a href='https://github.com/tushargupta51'><img border=0 src='https://avatars.githubusercontent.com/u/803796?v=3' height=16 width=16'></a> I think replacing the (Stream) ctor with (StreamWriter) makes sense.\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 54'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38237459'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-72</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> null check\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/System.IdentityModel.Tokens/LogMessages.cs 5'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38238222'>File: src/System.IdentityModel.Tokens/LogMessages.cs:L19-28</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> One way to think about splitting this up is to have each assembly own their logging messages. So S.IM.Tokens has S.IM.Tokens/LogMessages.cs, etc.\n- <a href='https://github.com/tushargupta51'><img border=0 src='https://avatars.githubusercontent.com/u/803796?v=3' height=16 width=16'></a> That was in the initial plan for this PR. But some messages are overlapping across different projects. That can result in some redundancy. Though I created a separate one for M.IM.Logging since that cannot take a dependency on S.IM.Tokens. I will try to separate them out, that's better than having it all in one.\n- <a href='https://github.com/tushargupta51'><img border=0 src='https://avatars.githubusercontent.com/u/803796?v=3' height=16 width=16'></a> I opened up a beta 8 issue for this. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/240\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 29'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38238433'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-72</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> Suggest adding a static property: string DefaultLogFileName{get;} so users can find the file name easily.\n- [ ] <a href='#crh-comment-Pull dbc39dded082a81eb9b19b764e1a2fdde499a305 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 30'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38239092'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-72</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> In order for all logs to be written, the stream writer needs to be flushed.\nUsers could have used the constructor that takes a StreamWriter, they should have set 'AutoFlush'. We should set 'AutoFlush' by default. Question is, do we need a way for users to control this?\n- <a href='https://github.com/tushargupta51'><img border=0 src='https://avatars.githubusercontent.com/u/803796?v=3' height=16 width=16'></a> I created a bool _disposeStreamWriter which is set to false when users use the ctor that takes a StreamWriter. We should always be flushing the streamWriter before disposing the TextWriterEventListener object. I don't think we need to 'AutoFlush' property. Is there a scenario where not flushing the streamwriter makes sense?\n- [ ] <a href='#crh-comment-Pull 6537acca1185c44a05fd4cabc93d4dc7ef9e51d8 src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs 99'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38446524'>File: src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs:L141-158</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> Datetime should be UTCNow\n- [ ] <a href='#crh-comment-Pull 6537acca1185c44a05fd4cabc93d4dc7ef9e51d8 src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs 38'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38446705'>File: src/Microsoft.IdentityModel.Logging/TextWriterEventListener.cs:L1-102</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> What happens if the file cannot be opened or created?\n- <a href='https://github.com/tushargupta51'><img border=0 src='https://avatars.githubusercontent.com/u/803796?v=3' height=16 width=16'></a> It will throw exception.: System.UnauthorizedAccessException (when file cannot be written) or System.IO.IOException (when it cannot create new).\n- [ ] <a href='#crh-comment-Pull de50d81a057e6dc6de9bb91f818d5427269f75a9 src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs 101'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38958028'>File: src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs:L141-158</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> I would recommend a slight coding change to remove local variables and string copies.\nreturn string.Format(CultureInfo.InvariantCulture, \"...\", level.ToString(), DateTime.UtcNow, message);\n- [ ] <a href='#crh-comment-Pull de50d81a057e6dc6de9bb91f818d5427269f75a9 src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs 93'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38958162'>File: src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs:L141-158</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> What happens if 'level' is out of range?\n- [ ] <a href='#crh-comment-Pull de50d81a057e6dc6de9bb91f818d5427269f75a9 src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs 81'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238#discussion_r38958298'>File: src/Microsoft.IdentityModel.Logging/IdentityModelEventSource.cs:L88-97</a></b>\n- <a href='https://github.com/brentschmaltz'><img border=0 src='https://avatars.githubusercontent.com/u/3172421?v=3' height=16 width=16'></a> Should we call PrepareMessage inside: if (IsEnabled() ...)?\n\n\n<a href='https://www.codereviewhub.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238?mark_as_completed=1'><img src='http://www.codereviewhub.com/site/github-mark-as-completed.png' height=26></a>&nbsp;<a href='https://www.codereviewhub.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238?approve=1'><img src='http://www.codereviewhub.com/site/github-approve.png' height=26></a>&nbsp;<a href='https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238'><img src='http://www.codereviewhub.com/site/github-refresh.png' height=26></a>\n<a href='#crh-end'></a>","created_at":"2015-08-26T23:29:06Z","updated_at":"2015-09-08T17:58:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2f9a0932b54c644741ceac0be010c6f3662e83df","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238/commits","review_comments_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238/comments","review_comment_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/238/comments","statuses_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/statuses/de50d81a057e6dc6de9bb91f818d5427269f75a9","head":{"label":"AzureAD:logging","ref":"logging","sha":"de50d81a057e6dc6de9bb91f818d5427269f75a9","user":{"login":"AzureAD","id":2966316,"avatar_url":"https://avatars.githubusercontent.com/u/2966316?v=3","gravatar_id":"","url":"https://api.github.com/users/AzureAD","html_url":"https://github.com/AzureAD","followers_url":"https://api.github.com/users/AzureAD/followers","following_url":"https://api.github.com/users/AzureAD/following{/other_user}","gists_url":"https://api.github.com/users/AzureAD/gists{/gist_id}","starred_url":"https://api.github.com/users/AzureAD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AzureAD/subscriptions","organizations_url":"https://api.github.com/users/AzureAD/orgs","repos_url":"https://api.github.com/users/AzureAD/repos","events_url":"https://api.github.com/users/AzureAD/events{/privacy}","received_events_url":"https://api.github.com/users/AzureAD/received_events","type":"Organization","site_admin":false},"repo":{"id":17496194,"name":"azure-activedirectory-identitymodel-extensions-for-dotnet","full_name":"AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","owner":{"login":"AzureAD","id":2966316,"avatar_url":"https://avatars.githubusercontent.com/u/2966316?v=3","gravatar_id":"","url":"https://api.github.com/users/AzureAD","html_url":"https://github.com/AzureAD","followers_url":"https://api.github.com/users/AzureAD/followers","following_url":"https://api.github.com/users/AzureAD/following{/other_user}","gists_url":"https://api.github.com/users/AzureAD/gists{/gist_id}","starred_url":"https://api.github.com/users/AzureAD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AzureAD/subscriptions","organizations_url":"https://api.github.com/users/AzureAD/orgs","repos_url":"https://api.github.com/users/AzureAD/repos","events_url":"https://api.github.com/users/AzureAD/events{/privacy}","received_events_url":"https://api.github.com/users/AzureAD/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","description":"IdentityModel extensions for .Net","fork":false,"url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","forks_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/forks","keys_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/teams","hooks_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/hooks","issue_events_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/events","assignees_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/tags","blobs_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/languages","stargazers_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/stargazers","contributors_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/contributors","subscribers_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/subscribers","subscription_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/subscription","commits_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/merges","archive_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/downloads","issues_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/releases{/id}","created_at":"2014-03-06T23:18:05Z","updated_at":"2015-08-26T19:30:33Z","pushed_at":"2015-09-02T23:37:20Z","git_url":"git://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet.git","ssh_url":"git@github.com:AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet.git","clone_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet.git","svn_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","homepage":"","size":4081,"stargazers_count":84,"watchers_count":84,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":31,"mirror_url":null,"open_issues_count":62,"forks":31,"open_issues":62,"watchers":84,"default_branch":"master"}},"base":{"label":"AzureAD:KDev","ref":"KDev","sha":"2f9ebaaea17788c58a040c362ed73780b212fc07","user":{"login":"AzureAD","id":2966316,"avatar_url":"https://avatars.githubusercontent.com/u/2966316?v=3","gravatar_id":"","url":"https://api.github.com/users/AzureAD","html_url":"https://github.com/AzureAD","followers_url":"https://api.github.com/users/AzureAD/followers","following_url":"https://api.github.com/users/AzureAD/following{/other_user}","gists_url":"https://api.github.com/users/AzureAD/gists{/gist_id}","starred_url":"https://api.github.com/users/AzureAD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AzureAD/subscriptions","organizations_url":"https://api.github.com/users/AzureAD/orgs","repos_url":"https://api.github.com/users/AzureAD/repos","events_url":"https://api.github.com/users/AzureAD/events{/privacy}","received_events_url":"https://api.github.com/users/AzureAD/received_events","type":"Organization","site_admin":false},"repo":{"id":17496194,"name":"azure-activedirectory-identitymodel-extensions-for-dotnet","full_name":"AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","owner":{"login":"AzureAD","id":2966316,"avatar_url":"https://avatars.githubusercontent.com/u/2966316?v=3","gravatar_id":"","url":"https://api.github.com/users/AzureAD","html_url":"https://github.com/AzureAD","followers_url":"https://api.github.com/users/AzureAD/followers","following_url":"https://api.github.com/users/AzureAD/following{/other_user}","gists_url":"https://api.github.com/users/AzureAD/gists{/gist_id}","starred_url":"https://api.github.com/users/AzureAD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AzureAD/subscriptions","organizations_url":"https://api.github.com/users/AzureAD/orgs","repos_url":"https://api.github.com/users/AzureAD/repos","events_url":"https://api.github.com/users/AzureAD/events{/privacy}","received_events_url":"https://api.github.com/users/AzureAD/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","description":"IdentityModel extensions for .Net","fork":false,"url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","forks_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/forks","keys_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/teams","hooks_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/hooks","issue_events_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/events","assignees_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/tags","blobs_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/languages","stargazers_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/stargazers","contributors_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/contributors","subscribers_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/subscribers","subscription_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/subscription","commits_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/merges","archive_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/downloads","issues_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/releases{/id}","created_at":"2014-03-06T23:18:05Z","updated_at":"2015-08-26T19:30:33Z","pushed_at":"2015-09-02T23:37:20Z","git_url":"git://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet.git","ssh_url":"git@github.com:AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet.git","clone_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet.git","svn_url":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet","homepage":"","size":4081,"stargazers_count":84,"watchers_count":84,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":31,"mirror_url":null,"open_issues_count":62,"forks":31,"open_issues":62,"watchers":84,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238"},"html":{"href":"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/238"},"issue":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/238"},"comments":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/238/comments"},"review_comments":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238/comments"},"review_comment":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pulls/238/commits"},"statuses":{"href":"https://api.github.com/repos/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/statuses/de50d81a057e6dc6de9bb91f818d5427269f75a9"}}}}