or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

basic-logging.mdindex.mdlevel-control.mdmulti-logger.mdplugins.md

level-control.mddocs/

0

# Level Control

1

2

Manage logging levels with persistence, providing fine-grained control over which messages are displayed across different environments.

3

4

## Capabilities

5

6

### setLevel

7

8

```javascript { .api }

9

/**

10

* Set the current logging level

11

* Disables all logging below the specified level

12

* @param {LogLevelDesc} level - Level as string, number, or constant

13

* @param {boolean} persist - Whether to persist level (default: true)

14

* @throws {TypeError} When invalid level is provided

15

*/

16

setLevel(level: LogLevelDesc, persist?: boolean): void;

17

18

// Valid level descriptors

19

type LogLevelDesc =

20

| 0 | 1 | 2 | 3 | 4 | 5 // Numbers

21

| 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent' // Lowercase strings

22

| 'TRACE' | 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'SILENT'; // Uppercase strings

23

24

// Level constants

25

interface LogLevel {

26

TRACE: 0;

27

DEBUG: 1;

28

INFO: 2;

29

WARN: 3;

30

ERROR: 4;

31

SILENT: 5;

32

}

33

34

// Level number type

35

type LogLevelNumbers = 0 | 1 | 2 | 3 | 4 | 5;

36

```

37

38

**Usage Examples:**

39

40

```javascript

41

import log from 'loglevel';

42

43

// String levels (case-insensitive)

44

log.setLevel("warn");

45

log.setLevel("ERROR");

46

47

// Numeric levels

48

log.setLevel(2); // INFO level

49

50

// Level constants

51

log.setLevel(log.levels.DEBUG);

52

53

// Disable persistence

54

log.setLevel("info", false);

55

56

// After setting to "warn", only warn and error messages show

57

log.debug("This won't appear");

58

log.warn("This will appear");

59

log.error("This will appear");

60

```

61

62

### getLevel

63

64

```javascript { .api }

65

/**

66

* Get current logging level as number

67

* Useful for level-based conditional logic

68

* @returns {LogLevelNumbers} Current level (0=TRACE, 1=DEBUG, 2=INFO, 3=WARN, 4=ERROR, 5=SILENT)

69

*/

70

getLevel(): LogLevelNumbers;

71

```

72

73

**Usage Examples:**

74

75

```javascript

76

import log from 'loglevel';

77

78

log.setLevel("info");

79

const currentLevel = log.getLevel(); // Returns 2

80

81

// Conditional logging based on level

82

if (log.getLevel() <= log.levels.DEBUG) {

83

const expensiveDebugData = generateDebugInfo();

84

log.debug("Debug data:", expensiveDebugData);

85

}

86

87

// Level comparison

88

if (log.getLevel() < log.levels.ERROR) {

89

log.warn("Non-critical warning message");

90

}

91

```

92

93

### setDefaultLevel

94

95

```javascript { .api }

96

/**

97

* Set default level without affecting persisted settings

98

* Used for initial configuration that users can override

99

* @param {LogLevelDesc} level - Level as string, number, or constant

100

*/

101

setDefaultLevel(level: LogLevelDesc): void;

102

```

103

104

**Usage Examples:**

105

106

```javascript

107

import log from 'loglevel';

108

109

// Application initialization

110

log.setDefaultLevel("warn"); // Default for production

111

112

// If user previously set a level, it stays active

113

// If no persisted level exists, uses "warn"

114

115

// Useful for library initialization

116

function initializeLibrary() {

117

log.setDefaultLevel("error"); // Libraries should be quiet by default

118

}

119

```

120

121

### resetLevel

122

123

```javascript { .api }

124

/**

125

* Reset to default level and clear persisted level

126

* Restores initial logging configuration

127

*/

128

resetLevel(): void;

129

```

130

131

**Usage Examples:**

132

133

```javascript

134

import log from 'loglevel';

135

136

// User sets custom level

137

log.setLevel("trace");

138

139

// Later, reset to default

140

log.resetLevel(); // Returns to "warn" (or setDefaultLevel value)

141

142

// Clears localStorage/cookie persistence

143

// Useful for logout or session reset

144

function resetUserSession() {

145

log.resetLevel();

146

}

147

```

148

149

### enableAll

150

151

```javascript { .api }

152

/**

153

* Enable all logging (equivalent to setLevel("trace"))

154

* Shows maximum detail for debugging

155

* @param {boolean} persist - Whether to persist setting (default: true)

156

*/

157

enableAll(persist?: boolean): void;

158

```

159

160

**Usage Examples:**

161

162

```javascript

163

import log from 'loglevel';

164

165

// Development debugging

166

log.enableAll();

167

168

// Temporary debugging without persistence

169

log.enableAll(false);

170

171

// Console debugging session

172

// log.enableAll() - run this in browser console for full logging

173

```

174

175

### disableAll

176

177

```javascript { .api }

178

/**

179

* Disable all logging (equivalent to setLevel("silent"))

180

* Completely suppresses log output

181

* @param {boolean} persist - Whether to persist setting (default: true)

182

*/

183

disableAll(persist?: boolean): void;

184

```

185

186

**Usage Examples:**

187

188

```javascript

189

import log from 'loglevel';

190

191

// Production silence

192

log.disableAll();

193

194

// Temporary quiet mode

195

log.disableAll(false);

196

197

// Performance-critical sections

198

function performanceCriticalOperation() {

199

log.disableAll(false);

200

// ... intensive operations ...

201

log.setLevel("warn"); // Restore normal level

202

}

203

```

204

205

## Level Hierarchy

206

207

Levels follow a strict hierarchy where higher levels include all lower levels:

208

209

```

210

TRACE (0) ← Most verbose

211

212

DEBUG (1)

213

214

INFO (2)

215

216

WARN (3) ← Default level

217

218

ERROR (4)

219

220

SILENT (5) ← No output

221

```

222

223

**Usage Examples:**

224

225

```javascript

226

import log from 'loglevel';

227

228

// Set to INFO level

229

log.setLevel("info");

230

231

// These will output:

232

log.info("Info message"); // ✓ Level 2

233

log.warn("Warning"); // ✓ Level 3

234

log.error("Error"); // ✓ Level 4

235

236

// These will be silent:

237

log.trace("Trace message"); // ✗ Level 0

238

log.debug("Debug info"); // ✗ Level 1

239

```

240

241

## Persistence

242

243

Levels are automatically persisted across page reloads and sessions:

244

245

- **Primary**: localStorage (when available)

246

- **Fallback**: Session cookies

247

- **Node.js**: No persistence (manual configuration required)

248

249

```javascript

250

import log from 'loglevel';

251

252

// Persisted by default

253

log.setLevel("debug");

254

// Level survives page reload

255

256

// Temporary level (not persisted)

257

log.setLevel("trace", false);

258

// Resets to previous persistent level on reload

259

260

// Clear persistence

261

log.resetLevel();

262

// Removes stored level setting

263

```