웹 개발을 하다 보면 console.log()를 사용하여 디버깅해야 합니다.
하지만 모바일에서는 확인할 수 없어 불편할 때가 있습니다.
이 글에서는 console.log의 출력을 웹 페이지의 특정 <div> 영역에 표시하는 방법을 소개합니다.
기본적으로 console.log()는 브라우저의 개발자 도구에 출력됩니다.
하지만 이를 가로채서 웹 페이지 내의 <div>에 출력하도록 만들면, 개발자 도구 없이도 디버깅 정보를 쉽게 확인할 수 있습니다.
주요 기능:
- console.log()의 기본 기능 유지
- div 안에 로그 출력
- 객체(Object)와 배열(Array) 변환하여 가독성 높이기
- Promise 처리하여 해결된 값 출력
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Console Log to Div</title>
<style>
#log-container {
width: 100%;
height: 300px;
border: 1px solid #ccc;
padding: 10px;
overflow-y: auto;
background-color: #f9f9f9;
font-family: monospace;
white-space: pre-wrap; /* 줄바꿈 적용 */
}
</style>
</head>
<body>
<h2>Console Output</h2>
<div id="log-container"></div>
<script>
(function() {
const oldConsoleLog = console.log;
const logContainer = document.getElementById("log-container");
console.log = function(...messages) {
oldConsoleLog.apply(console, messages); // 원래 기능 유지
messages.forEach((message) => {
const logMessage = document.createElement("div");
if (typeof message === "object") {
// Promise 처리
if (message instanceof Promise) {
message.then((resolvedValue) => {
logMessage.textContent = "Promise Resolved: " + JSON.stringify(resolvedValue, null, 2);
logContainer.appendChild(logMessage);
}).catch((error) => {
logMessage.textContent = "Promise Rejected: " + error;
logContainer.appendChild(logMessage);
});
return;
}
// 일반 객체 처리
logMessage.textContent = JSON.stringify(message, null, 2);
} else {
logMessage.textContent = message;
}
logContainer.appendChild(logMessage);
});
};
})();
// 테스트 로그
console.log("Hello, World!");
console.log({ name: "Alice", age: 25 });
console.log([1, 2, 3, 4, 5]);
const myPromise = new Promise((resolve) => setTimeout(() => resolve({ status: "success", data: [1, 2, 3] }), 1000));
console.log(myPromise);
</script>
</body>
</html>
'프로그래밍 > Js' 카테고리의 다른 글
TODO 관리 시스템 (0) | 2025.03.18 |
---|---|
Promise.all 모든 비동기 작업이 끝난후 작업 실행 (0) | 2024.10.25 |
Promise 와 async await 대해 자세하게 알아보자. (0) | 2024.10.24 |
indexedDB 기초 사용법 (0) | 2024.10.07 |
Array.reduce 여러가지 사용 사례 (0) | 2024.08.27 |