[Server] Use logger for logging
This commit is contained in:
		
							parent
							
								
									110eeb89f1
								
							
						
					
					
						commit
						238c6a428b
					
				
					 5 changed files with 34 additions and 30 deletions
				
			
		
							
								
								
									
										3
									
								
								src/remote/activitypub/logger.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/remote/activitypub/logger.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
import { remoteLogger } from "../logger";
 | 
			
		||||
 | 
			
		||||
export const apLogger = remoteLogger.createSubLogger('ap', 'magenta');
 | 
			
		||||
| 
						 | 
				
			
			@ -1,7 +1,6 @@
 | 
			
		|||
import { request } from 'https';
 | 
			
		||||
import { sign } from 'http-signature';
 | 
			
		||||
import { URL } from 'url';
 | 
			
		||||
import * as debug from 'debug';
 | 
			
		||||
import * as crypto from 'crypto';
 | 
			
		||||
import { lookup, IRunOptions } from 'lookup-dns-cache';
 | 
			
		||||
import * as promiseAny from 'promise-any';
 | 
			
		||||
| 
						 | 
				
			
			@ -9,11 +8,12 @@ import * as promiseAny from 'promise-any';
 | 
			
		|||
import config from '../../config';
 | 
			
		||||
import { ILocalUser } from '../../models/user';
 | 
			
		||||
import { publishApLogStream } from '../../stream';
 | 
			
		||||
import { apLogger } from './logger';
 | 
			
		||||
 | 
			
		||||
const log = debug('misskey:activitypub:deliver');
 | 
			
		||||
export const logger = apLogger.createSubLogger('deliver');
 | 
			
		||||
 | 
			
		||||
export default (user: ILocalUser, url: string, object: any) => new Promise(async (resolve, reject) => {
 | 
			
		||||
	log(`--> ${url}`);
 | 
			
		||||
	logger.info(`--> ${url}`);
 | 
			
		||||
 | 
			
		||||
	const timeout = 10 * 1000;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ export default (user: ILocalUser, url: string, object: any) => new Promise(async
 | 
			
		|||
			'Digest': `SHA-256=${hash}`
 | 
			
		||||
		}
 | 
			
		||||
	}, res => {
 | 
			
		||||
		log(`${url} --> ${res.statusCode}`);
 | 
			
		||||
		logger.info(`${url} --> ${res.statusCode}`);
 | 
			
		||||
 | 
			
		||||
		if (res.statusCode >= 400) {
 | 
			
		||||
			reject(res);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,9 @@
 | 
			
		|||
import * as request from 'request-promise-native';
 | 
			
		||||
import * as debug from 'debug';
 | 
			
		||||
import { IObject } from './type';
 | 
			
		||||
import config from '../../config';
 | 
			
		||||
import { apLogger } from './logger';
 | 
			
		||||
 | 
			
		||||
const log = debug('misskey:activitypub:resolver');
 | 
			
		||||
export const logger = apLogger.createSubLogger('resolver');
 | 
			
		||||
 | 
			
		||||
export default class Resolver {
 | 
			
		||||
	private history: Set<string>;
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ export default class Resolver {
 | 
			
		|||
				!object['@context'].includes('https://www.w3.org/ns/activitystreams') :
 | 
			
		||||
				object['@context'] !== 'https://www.w3.org/ns/activitystreams'
 | 
			
		||||
		)) {
 | 
			
		||||
			log(`invalid response: ${value}`);
 | 
			
		||||
			logger.error(`invalid response: ${value}`);
 | 
			
		||||
			throw new Error('invalid response');
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,6 @@ import * as fs from 'fs';
 | 
			
		|||
 | 
			
		||||
import * as mongodb from 'mongodb';
 | 
			
		||||
import * as crypto from 'crypto';
 | 
			
		||||
import * as debug from 'debug';
 | 
			
		||||
import * as Minio from 'minio';
 | 
			
		||||
import * as uuid from 'uuid';
 | 
			
		||||
import * as sharp from 'sharp';
 | 
			
		||||
| 
						 | 
				
			
			@ -23,8 +22,7 @@ import driveChart from '../../chart/drive';
 | 
			
		|||
import perUserDriveChart from '../../chart/per-user-drive';
 | 
			
		||||
import fetchMeta from '../../misc/fetch-meta';
 | 
			
		||||
import { GenerateVideoThumbnail } from './generate-video-thumbnail';
 | 
			
		||||
 | 
			
		||||
const log = debug('misskey:drive:add-file');
 | 
			
		||||
import { driveLogger } from './logger';
 | 
			
		||||
 | 
			
		||||
/***
 | 
			
		||||
 * Save file
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +40,7 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
	let webpublicType = 'image/jpeg';
 | 
			
		||||
 | 
			
		||||
	if (!metadata.uri) {	// from local instance
 | 
			
		||||
		log(`creating web image`);
 | 
			
		||||
		driveLogger.info(`creating web image of ${name}`);
 | 
			
		||||
 | 
			
		||||
		if (['image/jpeg'].includes(type)) {
 | 
			
		||||
			webpublic = await sharp(path)
 | 
			
		||||
| 
						 | 
				
			
			@ -83,10 +81,10 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
			webpublicExt = 'png';
 | 
			
		||||
			webpublicType = 'image/png';
 | 
			
		||||
		} else {
 | 
			
		||||
			log(`web image not created (not an image)`);
 | 
			
		||||
			driveLogger.info(`web image not created (not an image)`);
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		log(`web image not created (from remote)`);
 | 
			
		||||
		driveLogger.info(`web image not created (from remote)`);
 | 
			
		||||
	}
 | 
			
		||||
	// #endregion webpublic
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -123,7 +121,7 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
		try {
 | 
			
		||||
			thumbnail = await GenerateVideoThumbnail(path);
 | 
			
		||||
		} catch (e) {
 | 
			
		||||
			console.log(`GenerateVideoThumbnail failed: ${e}`);
 | 
			
		||||
			driveLogger.error(`GenerateVideoThumbnail failed: ${e}`);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// #endregion thumbnail
 | 
			
		||||
| 
						 | 
				
			
			@ -141,18 +139,18 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
		const webpublicKey = `${config.drive.prefix}/${uuid.v4()}.${webpublicExt}`;
 | 
			
		||||
		const thumbnailKey = `${config.drive.prefix}/${uuid.v4()}.${thumbnailExt}`;
 | 
			
		||||
 | 
			
		||||
		log(`uploading original: ${key}`);
 | 
			
		||||
		driveLogger.info(`uploading original: ${key}`);
 | 
			
		||||
		const uploads = [
 | 
			
		||||
			upload(key, fs.createReadStream(path), type)
 | 
			
		||||
		];
 | 
			
		||||
 | 
			
		||||
		if (webpublic) {
 | 
			
		||||
			log(`uploading webpublic: ${webpublicKey}`);
 | 
			
		||||
			driveLogger.info(`uploading webpublic: ${webpublicKey}`);
 | 
			
		||||
			uploads.push(upload(webpublicKey, webpublic, webpublicType));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (thumbnail) {
 | 
			
		||||
			log(`uploading thumbnail: ${thumbnailKey}`);
 | 
			
		||||
			driveLogger.info(`uploading thumbnail: ${thumbnailKey}`);
 | 
			
		||||
			uploads.push(upload(thumbnailKey, thumbnail, thumbnailType));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +200,7 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
			fs.createReadStream(path).pipe(writeStream);
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		log(`original stored to ${originalFile._id}`);
 | 
			
		||||
		driveLogger.info(`original stored to ${originalFile._id}`);
 | 
			
		||||
		// #endregion store original
 | 
			
		||||
 | 
			
		||||
		// #region store webpublic
 | 
			
		||||
| 
						 | 
				
			
			@ -222,7 +220,7 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
				writeStream.end(webpublic);
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			log(`web stored ${webFile._id}`);
 | 
			
		||||
			driveLogger.info(`web stored ${webFile._id}`);
 | 
			
		||||
		}
 | 
			
		||||
		// #endregion store webpublic
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -242,7 +240,7 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
				writeStream.end(thumbnail);
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			log(`thumbnail stored ${tuhmFile._id}`);
 | 
			
		||||
			driveLogger.info(`thumbnail stored ${tuhmFile._id}`);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return originalFile;
 | 
			
		||||
| 
						 | 
				
			
			@ -351,7 +349,7 @@ export default async function(
 | 
			
		|||
 | 
			
		||||
	const [hash, [mime, ext], size] = await Promise.all([calcHash, detectMime, getFileSize]);
 | 
			
		||||
 | 
			
		||||
	log(`hash: ${hash}, mime: ${mime}, ext: ${ext}, size: ${size}`);
 | 
			
		||||
	driveLogger.info(`hash: ${hash}, mime: ${mime}, ext: ${ext}, size: ${size}`);
 | 
			
		||||
 | 
			
		||||
	// detect name
 | 
			
		||||
	const detectedName = name || (ext ? `untitled.${ext}` : 'untitled');
 | 
			
		||||
| 
						 | 
				
			
			@ -365,7 +363,7 @@ export default async function(
 | 
			
		|||
		});
 | 
			
		||||
 | 
			
		||||
		if (much) {
 | 
			
		||||
			log(`file with same hash is found: ${much._id}`);
 | 
			
		||||
			driveLogger.info(`file with same hash is found: ${much._id}`);
 | 
			
		||||
			return much;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -395,7 +393,7 @@ export default async function(
 | 
			
		|||
				return 0;
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
		log(`drive usage is ${usage}`);
 | 
			
		||||
		driveLogger.info(`drive usage is ${usage}`);
 | 
			
		||||
 | 
			
		||||
		const instance = await fetchMeta();
 | 
			
		||||
		const driveCapacity = 1024 * 1024 * (isLocalUser(user) ? instance.localDriveCapacityMb : instance.remoteDriveCapacityMb);
 | 
			
		||||
| 
						 | 
				
			
			@ -438,12 +436,12 @@ export default async function(
 | 
			
		|||
 | 
			
		||||
		// Calc width and height
 | 
			
		||||
		const calcWh = async () => {
 | 
			
		||||
			log('calculate image width and height...');
 | 
			
		||||
			driveLogger.info('calculating image width and height...');
 | 
			
		||||
 | 
			
		||||
			// Calculate width and height
 | 
			
		||||
			const meta = await img.metadata();
 | 
			
		||||
 | 
			
		||||
			log(`image width and height is calculated: ${meta.width}, ${meta.height}`);
 | 
			
		||||
			driveLogger.info(`image width and height is calculated: ${meta.width}, ${meta.height}`);
 | 
			
		||||
 | 
			
		||||
			properties['width'] = meta.width;
 | 
			
		||||
			properties['height'] = meta.height;
 | 
			
		||||
| 
						 | 
				
			
			@ -451,7 +449,7 @@ export default async function(
 | 
			
		|||
 | 
			
		||||
		// Calc average color
 | 
			
		||||
		const calcAvg = async () => {
 | 
			
		||||
			log('calculate average color...');
 | 
			
		||||
			driveLogger.info('calculating average color...');
 | 
			
		||||
 | 
			
		||||
			try {
 | 
			
		||||
				const info = await (img as any).stats();
 | 
			
		||||
| 
						 | 
				
			
			@ -460,7 +458,7 @@ export default async function(
 | 
			
		|||
				const g = Math.round(info.channels[1].mean);
 | 
			
		||||
				const b = Math.round(info.channels[2].mean);
 | 
			
		||||
 | 
			
		||||
				log(`average color is calculated: ${r}, ${g}, ${b}`);
 | 
			
		||||
				driveLogger.info(`average color is calculated: ${r}, ${g}, ${b}`);
 | 
			
		||||
 | 
			
		||||
				const value = info.isOpaque ? [r, g, b] : [r, g, b, 255];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -516,14 +514,14 @@ export default async function(
 | 
			
		|||
		} catch (e) {
 | 
			
		||||
			// duplicate key error (when already registered)
 | 
			
		||||
			if (e.code === 11000) {
 | 
			
		||||
				log(`already registered ${metadata.uri}`);
 | 
			
		||||
				driveLogger.info(`already registered ${metadata.uri}`);
 | 
			
		||||
 | 
			
		||||
				driveFile = await DriveFile.findOne({
 | 
			
		||||
					'metadata.uri': metadata.uri,
 | 
			
		||||
					'metadata.userId': user._id
 | 
			
		||||
				});
 | 
			
		||||
			} else {
 | 
			
		||||
				console.error(e);
 | 
			
		||||
				driveLogger.error(e);
 | 
			
		||||
				throw e;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -531,7 +529,7 @@ export default async function(
 | 
			
		|||
		driveFile = await (save(path, detectedName, mime, hash, size, metadata));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log(`drive file has been created ${driveFile._id}`);
 | 
			
		||||
	driveLogger.succ(`drive file has been created ${driveFile._id}`);
 | 
			
		||||
 | 
			
		||||
	pack(driveFile).then(packedFile => {
 | 
			
		||||
		// Publish driveFileCreated event
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								src/services/drive/logger.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/services/drive/logger.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
import Logger from "../../misc/logger";
 | 
			
		||||
 | 
			
		||||
export const driveLogger = new Logger('drive', 'blue');
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue