<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>debug Archives - Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/tag/debug/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/tag/debug/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Tue, 17 Oct 2023 02:39:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>debug Archives - Tomoshare</title>
	<link>https://blog.tomosia.com.vn/tag/debug/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sentry for Rails</title>
		<link>https://blog.tomosia.com.vn/sentry-for-rails/</link>
					<comments>https://blog.tomosia.com.vn/sentry-for-rails/#comments</comments>
		
		<dc:creator><![CDATA[Dang Van Luan]]></dc:creator>
		<pubDate>Tue, 17 Oct 2023 02:39:51 +0000</pubDate>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[Rails]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1277</guid>

					<description><![CDATA[<p>Đặt vấn đề Trong quá trình phát triển web, không tránh khỏi việc ứng dụng của chúng ta&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/sentry-for-rails/">Sentry for Rails</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="718" height="250" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-44.png" alt="" class="wp-image-1291" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-44.png 718w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-44-300x104.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/image-44-380x132.png 380w" sizes="(max-width: 718px) 100vw, 718px" /></figure>



<h2 id="dat-van-de" class="wp-block-heading">Đặt vấn đề</h2>



<p>Trong quá trình phát triển web, không tránh khỏi việc ứng dụng của chúng ta xảy lỗi hệ thống.Mỗi lỗi hệ thống, crash, hoặc sự cố có thể gây ra tác động nghiêm trọng đến trải nghiệm người dùng và ảnh hưởng đến hiệu suất của ứng dụng. Sentry là một lựa chọn có thể giúp chúng ta kiểm soát tình hình và quản lý các lỗi hệ thống này một cách hiệu quả.</p>



<h2 id="gioi-thieu-sentry" class="wp-block-heading">Giới thiệu Sentry</h2>



<p>Sentry là một dịch vụ giám sát lỗi và hiểu lỗi phát triển dành cho các ứng dụng web và di động. Sentry giúp các nhà phát triển theo dõi và kiểm soát lỗi trong ứng dụng của họ để cải thiện chất lượng và hiệu suất của ứng dụng. Dưới đây là một số điểm quan trọng về Sentry:</p>



<ol class="wp-block-list">
<li><strong>Giám sát Lỗi (Error Monitoring)</strong>: Sentry thu thập thông tin về lỗi và sự cố trong ứng dụng và hiển thị chúng trong một giao diện quản trị để giúp bạn dễ dàng theo dõi và quản lý lỗi.</li>



<li><strong>Ghi Log (Logging)</strong>: Ngoài việc giám sát lỗi, Sentry cũng hỗ trợ ghi log để giúp bạn theo dõi và hiểu hơn về hoạt động của ứng dụng.</li>



<li><strong>Integrations</strong>: Sentry có khả năng tích hợp với nhiều ngôn ngữ lập trình và framework phổ biến như JavaScript, Python, Ruby, PHP, Java, và nhiều ứng dụng web framework khác.</li>



<li><strong>Tích hợp CICD</strong>: Sentry có thể tích hợp vào quy trình Continuous Integration và Continuous Deployment (CI/CD) để đảm bảo rằng lỗi không xuất hiện trong các phiên bản mới của ứng dụng.</li>



<li><strong>Thời gian thực (Real-Time)</strong>: Sentry cung cấp thông tin về lỗi và sự cố trong thời gian thực, giúp bạn nhanh chóng phát hiện và giải quyết các vấn đề liên quan đến hiệu suất của ứng dụng.</li>



<li><strong>Cấu hình tùy chỉnh (Customization)</strong>: Bạn có thể tùy chỉnh Sentry để phản ánh cơ cấu tổ chức và yêu cầu riêng của ứng dụng của bạn.</li>
</ol>



<p><em>Sentry là một công cụ quan trọng trong việc quản lý và cải thiện chất lượng của ứng dụng, giúp đảm bảo rằng lỗi được xử lý một cách hiệu quả và <strong>không ảnh hưởng đến trải nghiệm người dùng</strong>.</em></p>



<h2 id="config-sentry-cho-rails-app" class="wp-block-heading">Config Sentry cho Rails app</h2>



<p>Đăng ký / Đăng nhập tại <a href="https://sentry.io/">đây</a></p>



<p>Sau khi đăng nhập hãy tạo 1 project</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="784" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1-1024x784.png" alt="" class="wp-image-1281" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1-1024x784.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1-300x230.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1-768x588.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1-380x291.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1-800x612.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1-1160x888.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_2-1.png 1262w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Có thể thấy Sentry hỗ trợ rất nhiều ngôn ngữ và framework. Có một option Ruby nhưng option Rails sẽ hỗ trợ nhiều hơn và dễ sử dụng.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="778" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2-1024x778.png" alt="" class="wp-image-1284" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2-1024x778.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2-300x228.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2-768x583.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2-380x289.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2-800x608.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2-1160x881.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_4-2.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Sau khi tạo 1 sự án, Sentry sẽ cho chúng ta 1 hướng dẫn tích hợp Sentry vào Rails app như trên</p>



<p>Tiếp theo, setup cho source rails:</p>



<p><br>Add gem <em>sentry-ruby</em> và <em>sentry-rails</em></p>



<p><em>Đừng quên chạy <strong>bundle install</strong> nhé 🤣🤣</em></p>



<pre class="wp-block-code"><code>#Gemfile
gem "sentry-ruby"
gem "sentry-rails"</code></pre>



<p>Khởi tạo SDK với một số cấu hình cơ bản phục vụ cho việc tracking lỗi:</p>



<pre class="wp-block-code has-small-font-size"><code>#config/initializers/sentry.rb
Sentry.init do |config|
  config.dsn = 'https://4506035982696448.ingest.sentry.io/....'
  config.send_default_pii = true
  config.include_local_variables = true
  config.breadcrumbs_logger = &#91;:sentry_logger, :active_support_logger, :http_logger]

  filter = ActiveSupport::ParameterFilter.new(Rails.application.config.filter_parameters)
  config.before_send = lambda do |event, hint|
    filter.filter(event.to_hash)
  end

  config.traces_sample_rate = 0.1
end
</code></pre>



<p>Ở trong phần configure này, các cấu hình có ý nghĩa sau:<br></p>



<figure class="wp-block-table"><table><tbody><tr><td>config.dsn</td><td>Cấu hình Data Source Name (DSN) do Sentry cung cấp</td></tr><tr><td>config.send_default_pii</td><td>Đặt giá trị này thành <code>true</code> để gửi thông tin cá nhân (PII &#8211; Personally Identifiable Information) mặc định với các báo cáo lỗi. Thông tin cá nhân bao gồm địa chỉ IP và thông tin người dùng. Có thể điều chỉnh cài đặt này để bảo vệ sự riêng tư của người dùng.</td></tr><tr><td>config.include_local_variables</td><td>Đặt giá trị này thành <code>true</code> để bao gồm các biến cục bộ (local variables) trong báo cáo lỗi. Cài đặt này giúp theo dõi giá trị của các biến tại thời điểm xảy ra lỗi.</td></tr><tr><td>config.breadcrumbs_logger</td><td>Cấu hình loại logger mà Sentry sẽ sử dụng để ghi lại breadcrumbs. Trong trường hợp này, chỉ định ba loại logger: <code>:sentry_logger</code>, <code>:active_support_logger</code>, và <code>:http_logger</code>. Điều này có nghĩa là các breadcrumbs sẽ được ghi lại từ các sự kiện được ghi log bởi Sentry, Active Support, và HTTP.</td></tr><tr><td>config.before_send</td><td>Đây là một hàm lambda (anonymous function) được sử dụng để lọc dữ liệu trước khi nó được gửi đến Sentry. Trong trường hợp này, bạn sử dụng <code>ActiveSupport::ParameterFilter</code> để lọc các tham số cấu hình trong Rails để bảo vệ thông tin nhạy cảm trước khi gửi chúng đến Sentry.</td></tr><tr><td>config.traces_sample_rate</td><td>Đây là tỷ lệ mẫu (sample rate) cho việc theo dõi và thu thập dữ liệu về hiệu suất (traces). Giá trị 1.0 có nghĩa là tất cả các traces sẽ được thu thập. Nếu muốn giảm tỷ lệ thu thập, có thể đặt giá trị này dưới 1.0.</td></tr></tbody></table></figure>



<p>Sau khi configure, hãy kiểm tra xem Sentry đã được tính hợp đúng trong ứng dụng của chúng ta chưa nhé!</p>



<p><br>Có thể tạo 1 <em>Exception</em> hoặc sử dụng <em>rails console</em> và chạy lệnh sau:</p>



<pre class="wp-block-code"><code>Sentry.capture_message("test message")</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="631" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_5.png" alt="" class="wp-image-1286" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_5.png 1000w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_5-300x189.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_5-768x485.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_5-380x240.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_5-800x505.png 800w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p>Kết quả Sentry trả về cho chúng ta một event tracking lỗi chứa một số thông tin như: <em>thời gian, tên OS, môi trường, server name, message, vv&#8230;</em><br>như vậy có nghĩa là chúng ta đã tích hợp thành công Sentry vào Rails app<br><br>Các thông tin này sẽ được gửi lên server của Sentry và chúng ta có thể xem nó trên giao diện dasborad</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="774" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1-1024x774.png" alt="" class="wp-image-1288" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1-1024x774.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1-300x227.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1-768x581.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1-380x287.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1-800x605.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1-1160x877.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry_6-1.png 1283w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="summary" class="wp-block-heading">Summary</h2>



<p>Tóm tắt lại, trong bài viết này, chúng ta đã tìm hiểu về Sentry, một công cụ quan trọng trong quá trình phát triển ứng dụng Rails. Sentry không chỉ giúp theo dõi và ghi lại lỗi, mà còn cung cấp nhiều tính năng hữu ích khác để cải thiện chất lượng phần mềm.</p>



<p>Chúng ta đã xem xét cách tích hợp Sentry vào ứng dụng Rails, cấu hình gem, tùy chỉnh các cài đặt như gửi thông tin cá nhân, breadcrumbs, và lọc thông tin trước khi gửi đến Sentry.</p>



<p>Không chỉ với Ruby hay Rails, Sentry còn hỗ trợ hơn <a href="https://docs.sentry.io/platforms/">85 Platforms</a> khác nhau.<br>Tôi nghĩ trong vòng đời ứng dụng, việc tích hợp Sentry là càng sớm càng tốt<br></p>



<p><strong>Tài liệu</strong><br><a href="https://docs.sentry.io/platforms/ruby/guides/rails/">https://docs.sentry.io/platforms/ruby/guides/rails/</a></p>
<p>The post <a href="https://blog.tomosia.com.vn/sentry-for-rails/">Sentry for Rails</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/sentry-for-rails/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Sentry.io cho người mới bắt đầu (Vuejs)</title>
		<link>https://blog.tomosia.com.vn/sentry-io-cho-nguoi-moi-bat-dau-vuejs/</link>
					<comments>https://blog.tomosia.com.vn/sentry-io-cho-nguoi-moi-bat-dau-vuejs/#comments</comments>
		
		<dc:creator><![CDATA[admin_tomosia]]></dc:creator>
		<pubDate>Wed, 04 Oct 2023 07:08:05 +0000</pubDate>
				<category><![CDATA[VueJS]]></category>
		<category><![CDATA[sentry]]></category>
		<category><![CDATA[debug]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=259</guid>

					<description><![CDATA[<p>Tình huống Bạn đang phát triển một ứng dụng web Vue.js lớn với khách hàng cũng lớn không&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/sentry-io-cho-nguoi-moi-bat-dau-vuejs/">Sentry.io cho người mới bắt đầu (Vuejs)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js-1024x375.png" alt="" class="wp-image-260" style="width:680px;height:249px" width="680" height="249" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js-1024x375.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js-300x110.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js-768x282.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js-380x139.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js-800x293.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js-1160x425.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/sentry-and-vue-js.png 1200w" sizes="auto, (max-width: 680px) 100vw, 680px" /></figure>



<h2 id="tinh-huong" class="wp-block-heading">Tình huống</h2>



<p>Bạn đang phát triển một ứng dụng web Vue.js lớn với khách hàng cũng lớn không kém. Một ngày đẹp trời nào đó, khách hàng gửi cho bạn 1 bug mà thoạt nhìn có vẻ đơn giản, tuy nhiên, bạn không thể tái hiện lỗi này trong môi trường phát triển của mình, và bạn không có thông tin rõ ràng về tình trạng lỗi. Trong tình huống này, bạn có thể sử dụng <a href="https://sentry.io/welcome/"><strong>Sentry</strong></a> để giúp xác định và giải quyết lỗi một cách hiệu quả. Vậy cùng mình đi tìm hiểu xem Sentry là gì mà lại lợi hại như vậy.</p>



<h2 id="sentry-la-gi" class="wp-block-heading">Sentry là gì</h2>



<p>Sentry là một dịch vụ quản lý lỗi (error tracking) và giám sát (monitoring) phần mềm được sử dụng để theo dõi và ghi lại các lỗi và sự cố trong ứng dụng phần mềm. Sentry giúp các nhà phát triển và nhóm phát triển phát hiện, theo dõi, và khắc phục lỗi một cách hiệu quả. Dịch vụ này có thể được tích hợp vào các ứng dụng web và ứng dụng di động để ghi lại thông tin về lỗi, crash, và sự cố xảy ra trong quá trình chạy ứng dụng</p>



<h2 id="loi-ich-cua-sentry" class="wp-block-heading">Lợi ích của Sentry</h2>



<ul class="wp-block-list">
<li><strong>Ghi lại lỗi tự động:</strong> Sentry có thể được tích hợp vào mã của bạn để tự động ghi lại thông tin về lỗi mỗi khi nó xảy ra trong môi trường sản xuất. Điều này cho phép bạn nhận được thông báo ngay khi có sự cố xảy ra.</li>



<li><strong>Thông tin về lỗi chi tiết:</strong> Sentry không chỉ ghi lại lỗi mà còn cung cấp thông tin chi tiết về nguồn gốc của lỗi, ngăn chặn lỗi, và cách lỗi xảy ra. Điều này giúp bạn dễ dàng xác định vị trí và nguyên nhân gây ra lỗi.</li>



<li><strong>Theo dõi thời gian thực:</strong> Sentry cung cấp một giao diện quản lý web cho phép bạn theo dõi lỗi trong thời gian thực và tìm hiểu về tần suất và ngữ cảnh xảy ra lỗi.</li>



<li><strong>Cung cấp stack trace:</strong> Sentry có khả năng tạo ra stack trace, cho phép bạn xem các hàm và dòng mã cụ thể liên quan đến lỗi. Điều này giúp bạn tìm ra lỗi trong mã của bạn.</li>



<li><strong>Thông báo ngay lập tức: </strong>Sentry có thể bắn thông báo qua mail, SMS, &#8230;</li>
</ul>



<h2 id="setup-sentry-cho-vue2" class="wp-block-heading">Setup Sentry cho Vue2</h2>



<p>Muốn sử dụng Sentry trước tiên bạn cần có tài khoản, vào <a href="https://sentry.io/signup/ ">https://sentry.io/signup/ </a> để đăng ký tài khoản.</p>



<p>Sau khi đăng ký xong và đăng nhập thành công giao diện sẽ hiển thị như sau: </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="624" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-1024x624.png" alt="" class="wp-image-297" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-1024x624.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-300x183.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-768x468.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-1536x936.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-2048x1248.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-380x232.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-800x487.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1-1160x707.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-02-at-18.18.11-1.png 2728w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Okay, tiếp theo thì ấn vào nút <strong>Create project</strong>, trong phần tạo đấy, vì mình đang hướng dẫn cho vue nên hãy chọn vuejs, nhập tên project và nhấn nút <strong>Create Project</strong>: </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="701" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-1024x701.png" alt="" class="wp-image-290" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-1024x701.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-300x205.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-768x526.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-1536x1051.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-2048x1402.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-380x260.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-800x547.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06-1160x794.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-11.47.06.png 2300w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Vậy là chúng ta đã tạo xong <em>Project</em> trên <strong>Sentry</strong>, bước tiếp theo là lấy <strong>Client Keys (DSN)</strong> để có thể tích hợp vào dự án vuejs, từ <strong>Menu -&gt; Projects -&gt; Chọn Project bạn vừa tạo -&gt; Chọn cài đặt bên góc trên bên phải -&gt; Client Keys (DSN)</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="653" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-1024x653.png" alt="" class="wp-image-294" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-1024x653.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-300x191.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-768x490.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-1536x979.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-2048x1306.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-380x242.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-800x510.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51-1160x740.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-03-at-12.11.51.png 2296w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Cài đặt <strong>Sentry</strong> cho vue: <strong><code><mark style="background-color:#e9ecef" class="has-inline-color has-black-color">npm install @sentry/cli</mark></code></strong></p>



<p>Trong <strong>main.js</strong>, khởi tạo <em>Sentry.init</em> với <em>dsn</em> chính là <strong>Client Keys (DSN)</strong> bạn lấy ở bên trên: </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#282A36"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="import Vue from 'vue'
import App from './App.vue'
import * as Sentry from &quot;@sentry/vue&quot;

Vue.config.productionTip = false

Sentry.init({
  Vue,
  dsn: &quot;https://51b9f7xxxxxxxx.ingest.sentry.io/45059xxxxxxxxx&quot;
});

new Vue({
  render: h =&gt; h(App),
}).$mount('#app')
" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #FF79C6">import</span><span style="color: #F8F8F2"> Vue </span><span style="color: #FF79C6">from</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">vue</span><span style="color: #E9F284">&#39;</span></span>
<span class="line"><span style="color: #FF79C6">import</span><span style="color: #F8F8F2"> App </span><span style="color: #FF79C6">from</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">./App.vue</span><span style="color: #E9F284">&#39;</span></span>
<span class="line"><span style="color: #FF79C6">import</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">*</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">as</span><span style="color: #F8F8F2"> Sentry </span><span style="color: #FF79C6">from</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">@sentry/vue</span><span style="color: #E9F284">&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F8F8F2">Vue.config.productionTip </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">false</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F8F8F2">Sentry.</span><span style="color: #50FA7B">init</span><span style="color: #F8F8F2">({</span></span>
<span class="line"><span style="color: #F8F8F2">  Vue,</span></span>
<span class="line"><span style="color: #F8F8F2">  dsn</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">https://51b9f7xxxxxxxx.ingest.sentry.io/45059xxxxxxxxx</span><span style="color: #E9F284">&quot;</span></span>
<span class="line"><span style="color: #F8F8F2">});</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6; font-weight: bold">new</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">Vue</span><span style="color: #F8F8F2">({</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #50FA7B">render</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #FFB86C; font-style: italic">h</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">=&gt;</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">h</span><span style="color: #F8F8F2">(App),</span></span>
<span class="line"><span style="color: #F8F8F2">}).</span><span style="color: #50FA7B">$mount</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&#39;</span><span style="color: #F1FA8C">#app</span><span style="color: #E9F284">&#39;</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span></code></pre></div>



<p>Các bước đã xong, giờ bạn đã có thể test <strong>Sentry</strong> bằng cách tạo thử 1 <em>Exception</em>.</p>



<p>Khi 1 <em>Exception</em> được thực thi, <strong>Sentry</strong> sẽ bắt và trả về cho bạn thông tin xoay quanh <em>Exception</em> đó: </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="545" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-1024x545.png" alt="" class="wp-image-376" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-1024x545.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-300x160.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-768x409.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-1536x817.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-2048x1089.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-380x202.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-800x426.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-1160x617.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38-1920x1024.png 1920w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screenshot-2023-10-04-at-12.19.38.png 2722w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="tong-ket" class="wp-block-heading">Tổng kết</h2>



<p>Trên đây là thông tin cũng như hướng dẫn cơ bản để có thể tích hợp <strong>Sentry</strong> vào dự án vuejs, còn rất nhiều tính năng hay ho nữa như filter bằng trình duyệt, hỗ trợ source map trong việc gửi thông tin stack trace của exception, &#8230;. bạn hãy tự mình khám phá thêm nhé, mình đã làm được và mình tin bạn cũng sẽ làm được. Hẹn gặp lại ở bài tiếp theo</p>
<p>The post <a href="https://blog.tomosia.com.vn/sentry-io-cho-nguoi-moi-bat-dau-vuejs/">Sentry.io cho người mới bắt đầu (Vuejs)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/sentry-io-cho-nguoi-moi-bat-dau-vuejs/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
	</channel>
</rss>
