Google Apps Script를 이용한 커스텀 로그 모니터링 서비스

이 블로그에서는 Google Apps Script 및 Google Docs를 사용하여 맞춤형 서버리스 로깅 시스템을 설정하는 방법에 대해 설명합니다. Google Apps Script를 사용하여 HTTP 요청 및 기타 비즈니스 로직을 처리합니다. 로그를 Google 문서도구에 저장합니다.

내용물


  • Google 문서 만들기
  • 코드 작성
  • 웹 앱으로 배포
  • 결과

  • 1. 구글 문서 만들기



    먼저 https://docs.google.com/document/u/0/에 로그를 저장할 새 Google 문서를 만듭니다. Google Apps Script 프로젝트 코드에서 사용할 ID를 얻습니다.

    2. 코드 작성



    먼저 https://script.google.com/home 으로 이동하여 새 Google Apps Script 프로젝트를 생성하겠습니다. 새 프로젝트를 만들었으면 코드를 작성할 시간입니다. Main.gs 파일에 다음 코드를 추가해 보겠습니다.

    function logEvent(eventString, eventType='info') {
    
      // get google docs to store the logs
      var body = DocumentApp.openById('google-docs-id').getBody();
    
      // get current time
      var time = new Date().toUTCString();
    
      // create a log string
      var log = time + " - " + eventString;
    
      // add log string to the google docs
      body.appendParagraph(log);
    }
    


    위의 코드는 정말 간단합니다. 우리는 logEvent(eventString, eventType='info') 함수를 생성했습니다. 이 함수는 eventString, eventType(나중에 논의할 것임)이라는 두 개의 매개변수를 받습니다. 이 함수에서는 로그를 저장할 Google 문서의 본문을 가져옵니다. 그런 다음 현재 시간과 이벤트 문자열을 포함하는 새 문자열을 만들고 이 로그를 Google 문서의 본문에 추가합니다. 함수를 수동으로 실행하여 어떤 일이 발생하는지 확인할 수 있습니다.

    로그를 색상으로 구분하여 보고 이벤트 유형을 식별할 수 있다면 좋을 것입니다. 위의 코드를 아래 코드로 수정해 보겠습니다.

    function logEvent(eventString, eventType='info') {
    
      // get google docs to store the logs
      var body = DocumentApp.openById('google-docs-id').getBody();
    
      // get current time
      var time = new Date().toUTCString();
    
      // create a log string
      var log = time + " - " + eventString;
    
      // add log string to the google docs
      var par = body.appendParagraph(log);
    
      var style = {};
      style[DocumentApp.Attribute.FONT_SIZE] = 12;
    
      // based on the event type choose the style
      switch(eventType) {
        case 'info':
          style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#0000ff';
          break;
    
        case 'success':
          style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#06ad00';
          break;
    
        case 'warning':
          style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#e67e00';
          break;
    
        case 'error':
          style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#ff0000';
          break;
    
        default:
          style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#000000'
          break;
      }
    
      // apply the custom style the log string
      par.setAttributes(style);
    }
    


    eventType의 값에 따라 로그 문자열에 스타일을 적용합니다. 기본적으로 각 새 이벤트는 정보 유형과 연결됩니다.

    3. 웹 앱으로 배포



    스크립트의 핵심 코드가 완료되었습니다. 마지막 단계는 React Web App 또는 Flutter App과 같은 모든 유형의 애플리케이션에서 호출할 수 있는 Web App으로 스크립트를 배포하는 것입니다. Main.js 파일에 다음 함수를 추가합니다.

    // handles the get request to the server
    function doPost(e) {
      try {
        // get query parameters
        var eventString = e.parameter['event_name'];
        var eventType = e.parameter['event_type'];
    
        // log the event
        logEvent(eventString, eventType)
    
        // return json success result
        return ContentService
              .createTextOutput(JSON.stringify({"result": "success"}))
              .setMimeType(ContentService.MimeType.JSON);
        }
      }
      catch (e) {
        // return json failure result
        return ContentService
              .createTextOutput(JSON.stringify({"result": "failure"}))
              .setMimeType(ContentService.MimeType.JSON);
        }
      }
    }
    


    위의 코드는 Google Apps Script에 대한 게시 요청을 처리합니다. 스크립트 실행에 따라 애플리케이션에서 확인할 수 있는 JSON 응답이 다시 전송됩니다. 이 작업이 완료되면 스크립트를 웹 앱으로 배포하고 웹 앱 URL을 애플리케이션으로 사용할 수 있습니다.

    결과



    맞춤형 서버리스 로깅 시스템이 얼마나 잘 작동하는지 살펴보겠습니다.



    대박! 이러한 색상 코딩은 로그를 사용자에게 친숙하게 만듭니다. 이러한 종류의 사용자 정의 로깅 시스템은 프로덕션 모드에서 애플리케이션을 디버그하는 데에도 도움이 될 수 있습니다. 또한 특정 종류의 이벤트에 대한 이메일 또는 슬랙 알림 기능을 구성하여 팀이 애플리케이션의 모든 불규칙성을 알릴 수 있습니다. 오늘 새로운 것을 배웠기를 바랍니다. 우리 팀에 대한 의심이나 감사가 있으면 아래 의견에 알려주십시오.

    좋은 웹페이지 즐겨찾기