diff --git a/packages/core/parcel-bundler/src/Server.js b/packages/core/parcel-bundler/src/Server.js index bba8c0cd54f..7d44133a2ae 100644 --- a/packages/core/parcel-bundler/src/Server.js +++ b/packages/core/parcel-bundler/src/Server.js @@ -40,6 +40,8 @@ function middleware(bundler) { }); return function(req, res, next) { + logAccessIfVerbose(); + // Wait for the bundler to finish bundling if needed if (bundler.pending) { bundler.once('bundled', respond); @@ -107,6 +109,13 @@ function middleware(bundler) { res.writeHead(404); res.end(); } + + function logAccessIfVerbose() { + const protocol = req.connection.encrypted ? 'https' : 'http'; + const fullUrl = `${protocol}://${req.headers.host}${req.url}`; + + logger.verbose(fullUrl); + } }; } diff --git a/packages/core/parcel-bundler/test/server.js b/packages/core/parcel-bundler/test/server.js index a00cd6c4816..75d9f8a254f 100644 --- a/packages/core/parcel-bundler/test/server.js +++ b/packages/core/parcel-bundler/test/server.js @@ -1,9 +1,11 @@ const assert = require('assert'); const path = require('path'); const fs = require('@parcel/fs'); +const logger = require('@parcel/Logger'); const {bundler} = require('./utils'); const http = require('http'); const https = require('https'); +const sinon = require('sinon'); describe('server', function() { let server; @@ -214,4 +216,39 @@ describe('server', function() { await fs.readFile(path.join(__dirname, '/dist/index.html'), 'utf8') ); }); + + it('should not log dev server access for log level <= 3', async function() { + let b = bundler(path.join(__dirname, '/integration/html/index.html'), { + publicUrl: '/' + }); + server = await b.serve(0); + const spy = sinon.spy(logger, '_log'); + await get('/'); + + assert(!spy.called); + + // restore back defaults + logger._log.restore(); + }); + + it('should log dev server access for log level > 3', async function() { + let b = bundler(path.join(__dirname, '/integration/html/index.html'), { + publicUrl: '/' + }); + server = await b.serve(0); + logger.setOptions({logLevel: 4}); + const spy = sinon.spy(logger, '_log'); + + assert(!spy.called); + + await get('/'); + + assert(spy.calledOnce); + // partial matching for call args, since port is a moving target + assert(spy.args[0][0].includes('http://localhost')); + + // restore back defaults + logger._log.restore(); + logger.setOptions({logLevel: 3}); + }); });