Skip to content

Commit 583b953

Browse files
Merge pull request #385 from supertokens/feat/use-flag-for-logging
feat: added `debug` flag in the SuperTokenConfig logging
2 parents 2fee7f8 + 54e3516 commit 583b953

File tree

6 files changed

+180
-5
lines changed

6 files changed

+180
-5
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [unreleased]
99

10+
11+
## [0.16.5] - 2023-11-1
12+
13+
- Adds `debug` flag to the `TypeInput`. If set to `true`, debug logs will be printed.
14+
1015
## [0.16.4] - 2023-10-20
1116

1217
- Fixes an issue where sometimes the `Access-Control-Expose-Headers` header value would contain duplicates

recipe/session/logger_test.go

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
package session
2+
3+
import (
4+
"bytes"
5+
"log"
6+
"os"
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
"github.com/supertokens/supertokens-golang/supertokens"
11+
"github.com/supertokens/supertokens-golang/test/unittesting"
12+
)
13+
14+
// Added the logger tests here because supertokens/logger_test.go causes cyclic import errors due to imports in test/unittesting/testingUtils.go
15+
16+
func resetLogger() {
17+
supertokens.Logger = log.New(os.Stdout, "com.supertokens", 0)
18+
os.Unsetenv("SUPERTOKENS_DEBUG")
19+
supertokens.DebugEnabled = false
20+
}
21+
22+
func TestLogDebugMessageWhenDebugTrue(t *testing.T) {
23+
var logMessage = "test log message"
24+
var buf bytes.Buffer
25+
26+
supertokens.Logger = log.New(&buf, "test", 0)
27+
28+
configValue := supertokens.TypeInput{
29+
Supertokens: &supertokens.ConnectionInfo{
30+
ConnectionURI: "http://localhost:8080",
31+
},
32+
AppInfo: supertokens.AppInfo{
33+
AppName: "SuperTokens",
34+
APIDomain: "api.supertokens.io",
35+
WebsiteDomain: "supertokens.io",
36+
},
37+
RecipeList: []supertokens.Recipe{
38+
Init(nil),
39+
},
40+
Debug: true,
41+
}
42+
BeforeEach()
43+
44+
unittesting.StartUpST("localhost", "8080")
45+
46+
defer AfterEach()
47+
defer resetLogger()
48+
49+
err := supertokens.Init(configValue)
50+
51+
if err != nil {
52+
t.Error(err.Error())
53+
}
54+
55+
supertokens.LogDebugMessage(logMessage)
56+
assert.Contains(t, buf.String(), logMessage, "checking log message in logs")
57+
}
58+
59+
func TestLogDebugMessageWhenDebugFalse(t *testing.T) {
60+
var logMessage = "test log message"
61+
var buf bytes.Buffer
62+
63+
supertokens.Logger = log.New(&buf, "test", 0)
64+
65+
configValue := supertokens.TypeInput{
66+
Supertokens: &supertokens.ConnectionInfo{
67+
ConnectionURI: "http://localhost:8080",
68+
},
69+
AppInfo: supertokens.AppInfo{
70+
AppName: "SuperTokens",
71+
APIDomain: "api.supertokens.io",
72+
WebsiteDomain: "supertokens.io",
73+
},
74+
RecipeList: []supertokens.Recipe{
75+
Init(nil),
76+
},
77+
Debug: false,
78+
}
79+
BeforeEach()
80+
81+
unittesting.StartUpST("localhost", "8080")
82+
83+
defer AfterEach()
84+
defer resetLogger()
85+
86+
err := supertokens.Init(configValue)
87+
88+
if err != nil {
89+
t.Error(err.Error())
90+
}
91+
92+
supertokens.LogDebugMessage(logMessage)
93+
assert.NotContains(t, buf.String(), logMessage, "checking log message in logs")
94+
}
95+
96+
func TestLogDebugMessageWhenDebugNotSet(t *testing.T) {
97+
var logMessage = "test log message"
98+
var buf bytes.Buffer
99+
100+
supertokens.Logger = log.New(&buf, "test", 0)
101+
102+
configValue := supertokens.TypeInput{
103+
Supertokens: &supertokens.ConnectionInfo{
104+
ConnectionURI: "http://localhost:8080",
105+
},
106+
AppInfo: supertokens.AppInfo{
107+
AppName: "SuperTokens",
108+
APIDomain: "api.supertokens.io",
109+
WebsiteDomain: "supertokens.io",
110+
},
111+
RecipeList: []supertokens.Recipe{
112+
Init(nil),
113+
},
114+
}
115+
BeforeEach()
116+
117+
unittesting.StartUpST("localhost", "8080")
118+
119+
defer AfterEach()
120+
defer resetLogger()
121+
122+
err := supertokens.Init(configValue)
123+
124+
if err != nil {
125+
t.Error(err.Error())
126+
}
127+
128+
supertokens.LogDebugMessage(logMessage)
129+
assert.NotContains(t, buf.String(), logMessage, "checking log message in logs")
130+
}
131+
132+
func TestLogDebugMessageWithEnvVar(t *testing.T) {
133+
var logMessage = "test log message"
134+
var buf bytes.Buffer
135+
136+
supertokens.Logger = log.New(&buf, "test", 0)
137+
os.Setenv("SUPERTOKENS_DEBUG", "1")
138+
139+
configValue := supertokens.TypeInput{
140+
Supertokens: &supertokens.ConnectionInfo{
141+
ConnectionURI: "http://localhost:8080",
142+
},
143+
AppInfo: supertokens.AppInfo{
144+
AppName: "SuperTokens",
145+
APIDomain: "api.supertokens.io",
146+
WebsiteDomain: "supertokens.io",
147+
},
148+
RecipeList: []supertokens.Recipe{
149+
Init(nil),
150+
},
151+
}
152+
BeforeEach()
153+
154+
unittesting.StartUpST("localhost", "8080")
155+
156+
defer AfterEach()
157+
defer resetLogger()
158+
159+
err := supertokens.Init(configValue)
160+
161+
if err != nil {
162+
t.Error(err.Error())
163+
}
164+
165+
supertokens.LogDebugMessage(logMessage)
166+
assert.Contains(t, buf.String(), logMessage, "checking log message in logs")
167+
}

supertokens/constants.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const (
2121
)
2222

2323
// VERSION current version of the lib
24-
const VERSION = "0.16.4"
24+
const VERSION = "0.16.5"
2525

2626
var (
2727
cdiSupported = []string{"3.0"}

supertokens/logger.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ const supertokens_namespace = "com.supertokens"
1616
*/
1717

1818
var (
19-
logger = log.New(os.Stdout, supertokens_namespace, 0)
19+
Logger = log.New(os.Stdout, supertokens_namespace, 0)
20+
DebugEnabled = false
2021
)
2122

2223
func formatMessage(message string) string {
@@ -26,8 +27,7 @@ func formatMessage(message string) string {
2627

2728
func LogDebugMessage(message string) {
2829
_, exists := os.LookupEnv("SUPERTOKENS_DEBUG")
29-
if exists {
30-
logger.Printf(formatMessage(message))
31-
30+
if exists || DebugEnabled == true {
31+
Logger.Printf(formatMessage(message))
3232
}
3333
}

supertokens/models.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ type TypeInput struct {
4646
AppInfo AppInfo
4747
RecipeList []Recipe
4848
Telemetry *bool
49+
Debug bool
4950
OnSuperTokensAPIError func(err error, req *http.Request, res http.ResponseWriter)
5051
}
5152

supertokens/supertokens.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ func supertokensInit(config TypeInput) error {
5454
superTokens.OnSuperTokensAPIError = config.OnSuperTokensAPIError
5555
}
5656

57+
DebugEnabled = config.Debug
58+
5759
LogDebugMessage("Started SuperTokens with debug logging (supertokens.Init called)")
5860

5961
appInfoJsonString, _ := json.Marshal(config.AppInfo)

0 commit comments

Comments
 (0)