Skip to content

Commit

Permalink
Enable prefixed loggers to chain
Browse files Browse the repository at this point in the history
  • Loading branch information
jryans committed Feb 26, 2021
1 parent 198c9a2 commit ab61a80
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 16 deletions.
24 changes: 12 additions & 12 deletions src/crypto/OlmDevice.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

import {getPrefixedLogger, logger} from '../logger';
import {logger} from '../logger';
import {IndexedDBCryptoStore} from './store/indexeddb-crypto-store';
import * as algorithms from './algorithms';

Expand Down Expand Up @@ -545,7 +545,7 @@ OlmDevice.prototype.createOutboundSession = async function(
}
});
},
getPrefixedLogger("[createOutboundSession]"),
logger.withPrefix("[createOutboundSession]"),
);
return newSessionId;
};
Expand Down Expand Up @@ -606,7 +606,7 @@ OlmDevice.prototype.createInboundSession = async function(
}
});
},
getPrefixedLogger("[createInboundSession]"),
logger.withPrefix("[createInboundSession]"),
);

return result;
Expand All @@ -621,7 +621,7 @@ OlmDevice.prototype.createInboundSession = async function(
* @return {Promise<string[]>} a list of known session ids for the device
*/
OlmDevice.prototype.getSessionIdsForDevice = async function(theirDeviceIdentityKey) {
const log = getPrefixedLogger("[getSessionIdsForDevice]");
const log = logger.withPrefix("[getSessionIdsForDevice]");

if (this._sessionsInProgress[theirDeviceIdentityKey]) {
log.debug(`Waiting for Olm session for ${theirDeviceIdentityKey} to be created`);
Expand Down Expand Up @@ -705,7 +705,7 @@ OlmDevice.prototype.getSessionIdForDevice = async function(
* @return {Array.<{sessionId: string, hasReceivedMessage: Boolean}>}
*/
OlmDevice.prototype.getSessionInfoForDevice = async function(deviceIdentityKey, nowait) {
const log = getPrefixedLogger("[getSessionInfoForDevice]");
const log = logger.withPrefix("[getSessionInfoForDevice]");

if (this._sessionsInProgress[deviceIdentityKey] && !nowait) {
log.debug(`Waiting for Olm session for ${deviceIdentityKey} to be created`);
Expand Down Expand Up @@ -769,7 +769,7 @@ OlmDevice.prototype.encryptMessage = async function(
this._saveSession(theirDeviceIdentityKey, sessionInfo, txn);
});
},
getPrefixedLogger("[encryptMessage]"),
logger.withPrefix("[encryptMessage]"),
);
return res;
};
Expand Down Expand Up @@ -803,7 +803,7 @@ OlmDevice.prototype.decryptMessage = async function(
this._saveSession(theirDeviceIdentityKey, sessionInfo, txn);
});
},
getPrefixedLogger("[decryptMessage]"),
logger.withPrefix("[decryptMessage]"),
);
return payloadString;
};
Expand Down Expand Up @@ -835,7 +835,7 @@ OlmDevice.prototype.matchesSession = async function(
matches = sessionInfo.session.matches_inbound(ciphertext);
});
},
getPrefixedLogger("[matchesSession]"),
logger.withPrefix("[matchesSession]"),
);
return matches;
};
Expand Down Expand Up @@ -1106,7 +1106,7 @@ OlmDevice.prototype.addInboundGroupSession = async function(
},
);
},
getPrefixedLogger("[addInboundGroupSession]"),
logger.withPrefix("[addInboundGroupSession]"),
);
};

Expand Down Expand Up @@ -1277,7 +1277,7 @@ OlmDevice.prototype.decryptGroupMessage = async function(
},
);
},
getPrefixedLogger("[decryptGroupMessage]"),
logger.withPrefix("[decryptGroupMessage]"),
);

if (error) {
Expand Down Expand Up @@ -1323,7 +1323,7 @@ OlmDevice.prototype.hasInboundSessionKeys = async function(roomId, senderKey, se
},
);
},
getPrefixedLogger("[hasInboundSessionKeys]"),
logger.withPrefix("[hasInboundSessionKeys]"),
);

return result;
Expand Down Expand Up @@ -1383,7 +1383,7 @@ OlmDevice.prototype.getInboundGroupSessionKey = async function(
},
);
},
getPrefixedLogger("[getInboundGroupSessionKey]"),
logger.withPrefix("[getInboundGroupSessionKey]"),
);

return result;
Expand Down
4 changes: 2 additions & 2 deletions src/crypto/algorithms/megolm.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ limitations under the License.
* @module crypto/algorithms/megolm
*/

import {getPrefixedLogger, logger} from '../../logger';
import {logger} from '../../logger';
import * as utils from "../../utils";
import {polyfillSuper} from "../../utils";
import * as olmlib from "../olmlib";
Expand Down Expand Up @@ -736,7 +736,7 @@ MegolmEncryption.prototype._shareKeyWithDevices = async function(
logger.debug(`Ensuring Olm sessions for devices in ${this._roomId}`);
const devicemap = await olmlib.ensureOlmSessionsForDevices(
this._olmDevice, this._baseApis, devicesByUser, otkTimeout, failedServers,
getPrefixedLogger(`[${this._roomId}]`),
logger.withPrefix(`[${this._roomId}]`),
);
logger.debug(`Ensured Olm sessions for devices in ${this._roomId}`);

Expand Down
14 changes: 12 additions & 2 deletions src/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,27 @@ log.methodFactory = function(methodName, logLevel, loggerName) {
* Drop-in replacement for <code>console</code> using {@link https://www.npmjs.com/package/loglevel|loglevel}.
* Can be tailored down to specific use cases if needed.
*/
export const logger = log.getLogger(DEFAULT_NAMESPACE);
export const logger: PrefixedLogger = log.getLogger(DEFAULT_NAMESPACE);
logger.setLevel(log.levels.DEBUG);

interface PrefixedLogger extends Logger {
withPrefix?: (prefix: string) => PrefixedLogger;
prefix?: any;
}

export function getPrefixedLogger(prefix): PrefixedLogger {
function extendLogger(logger: PrefixedLogger) {
logger.withPrefix = function(prefix: string) {
return getPrefixedLogger(this.prefix + prefix);
};
}

extendLogger(logger);

function getPrefixedLogger(prefix): PrefixedLogger {
const prefixLogger: PrefixedLogger = log.getLogger(`${DEFAULT_NAMESPACE}-${prefix}`);
if (prefixLogger.prefix !== prefix) {
// Only do this setup work the first time through, as loggers are saved by name.
extendLogger(prefixLogger);
prefixLogger.prefix = prefix;
prefixLogger.setLevel(log.levels.DEBUG);
}
Expand Down

0 comments on commit ab61a80

Please sign in to comment.