EasilyNET.Mongo.ConsoleDebug 1.9.0-preview2

This is a prerelease version of EasilyNET.Mongo.ConsoleDebug.
There is a newer version of this package available.
See the version list below for details.
dotnet add package EasilyNET.Mongo.ConsoleDebug --version 1.9.0-preview2
                    
NuGet\Install-Package EasilyNET.Mongo.ConsoleDebug -Version 1.9.0-preview2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EasilyNET.Mongo.ConsoleDebug" Version="1.9.0-preview2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EasilyNET.Mongo.ConsoleDebug" Version="1.9.0-preview2" />
                    
Directory.Packages.props
<PackageReference Include="EasilyNET.Mongo.ConsoleDebug" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EasilyNET.Mongo.ConsoleDebug --version 1.9.0-preview2
                    
#r "nuget: EasilyNET.Mongo.ConsoleDebug, 1.9.0-preview2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EasilyNET.Mongo.ConsoleDebug@1.9.0-preview2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EasilyNET.Mongo.ConsoleDebug&version=1.9.0-preview2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=EasilyNET.Mongo.ConsoleDebug&version=1.9.0-preview2&prerelease
                    
Install as a Cake Tool

EasilyNET.Mongo.ConsoleDebug

常使用 EF 的小伙伴就应该能够知道,可以让 EF 生产的 SQL 语句输出到控制台,在开发的时候非常方便调试.<br/> 而 MongoDB 却没有这样的功能,所以产生了这个库,虽然不完美,但是能够解决一些开发过程中不方便排查问题的情况.

  • 最终效果类似如下:
 ╭───────────────────────────────Command────────────────────────────────╮╭──────────────────Calendar──────────────────╮
 │ {                                                                    ││                2023 August                 │
 │   "insert" : "mongo.test",                                           ││ ┌─────┬─────┬─────┬─────┬─────┬─────┬────┐ │
 │   "ordered" : true,                                                  ││ │ Sun │ Mon │ Tue │ Wed │ Thu │ Fri │ S… │ │
 │   "$db" : "test1",                                                   ││ ├─────┼─────┼─────┼─────┼─────┼─────┼────┤ │
 │   "lsid" : {                                                         ││ │     │     │ 1   │ 2   │ 3   │ 4   │ 5  │ │
 │     "id" : CSUUID("f12dd90d-2f58-4655-9bf2-cbce2d9bd2c4")            ││ │ 6   │ 7   │ 8   │ 9   │ 10  │ 11  │ 12 │ │
 │   },                                                                 ││ │ 13  │ 14  │ 15  │ 16  │ 17  │ 18  │ 19 │ │
 │   "documents" : [{                                                   ││ │ 20  │ 21  │ 22  │ 23* │ 24  │ 25  │ 26 │ │
 │       "_id" : ObjectId("64e57f266a1a63e69c52b9cb"),                  ││ │ 27  │ 28  │ 29  │ 30  │ 31  │     │    │ │
 │       "dateTime" : ISODate("2023-08-23T03:38:14.121Z"),              ││ │     │     │     │     │     │     │    │ │
 │       "timeSpan" : "00:00:50",                                       ││ └─────┴─────┴─────┴─────┴─────┴─────┴────┘ │
 │       "dateOnly" : "2023-08-23",                                     │╰────────────────────────────────────────────╯
 │       "timeOnly" : "11:38:14",                                       │╭────────────────────Info────────────────────╮
 │       "nullableDateOnly" : "2023-08-23",                             ││ {                                          │
 │       "nullableTimeOnly" : null                                      ││    "RequestId": 86,                        │
 │     }]                                                               ││    "Timestamp": "2023-08-23 03:38:14",     │
 │ }                                                                    ││    "Method": "insert",                     │
 │                                                                      ││    "DatabaseName": "test1",                │
 │                                                                      ││    "CollectionName": "mongo.test",         │
 │                                                                      ││    "ConnectionInfo": {                     │
 │                                                                      ││       "ClusterId": 1,                      │
 │                                                                      ││       "EndPoint": "127.0.0.1:27018"        │
 │                                                                      ││    }                                       │
 │                                                                      ││ }                                          │
 │                                                                      │╰────────────────────────────────────────────╯
 │                                                                      │╭───────────────Request Status───────────────╮
 │                                                                      ││ ┌───────────┬────────────────┬───────────┐ │
 │                                                                      ││ │ RequestId │      Time      │  Status   │ │
 │                                                                      ││ ├───────────┼────────────────┼───────────┤ │
 │                                                                      ││ │    86     │ 11:38:14.12640 │ Succeeded │ │
 │                                                                      ││ └───────────┴────────────────┴───────────┘ │
 │                                                                      │╰────────────────────────────────────────────╯
 │                                                                      │╭───────────────────NiuNiu───────────────────╮
 │                                                                      ││   --------------------------------------   │
 │                                                                      ││ /     Only two things are infinite,      \ │
 │                                                                      ││ \   the universe and human stupidity.    / │
 │                                                                      ││   --------------------------------------   │
 │                                                                      ││              ^__^     O   ^__^             │
 │                                                                      ││      _______/(oo)      o  (oo)\_______     │
 │                                                                      ││  /\/(       /(__)         (__)\       )\/\ │
 │                                                                      ││     ||w----||                 ||----w||    │
 │                                                                      ││     ||     ||                 ||     ||    │
 │                                                                      ││ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
 ╰──────────────────────────────────────────────────────────────────────╯╰────────────────────────────────────────────╯

使用方法

  • 使用默认值配置
var clientSettings = MongoClientSettings.FromUrl(mongoUrl);
clientSettings.ClusterConfigurator = cb => cb.Subscribe(new ActivityEventSubscriber());
var mongoClient = new MongoClient(clientSettings);
  • 使用集合名称进行过滤
var clientSettings = MongoClientSettings.FromUrl(mongoUrl);
// 定义需要输出的集合
HashSet<string> CommandsWithCollectionName = new()
{
    "mongo.test"
};
var options = new InstrumentationOptions()
{
    Enable = true,
    ShouldStartCollection = coll => CommandsWithCollectionName.Contains(coll)
};
clientSettings.ClusterConfigurator = cb => cb.Subscribe(new ActivityEventSubscriber(options));
var mongoClient = new MongoClient(clientSettings);
Seilog配置例子
// 添加Serilog配置
builder.Host.UseSerilog((hbc, lc) =>
{
    const LogEventLevel logLevel = LogEventLevel.Information;
    lc.ReadFrom.Configuration(hbc.Configuration)
          .MinimumLevel.Override("Microsoft", logLevel)
          .MinimumLevel.Override("System", logLevel)
          .Enrich.FromLogContext()
          .WriteTo.Async(wt =>
          {
              wt.Debug();
              // 输出到 Spectre.Console
              wt.SpectreConsole();
          });
});

同时参考MongoDB.Driver.Core.Extensions.DiagnosticSources

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.25.814.175 91 8/14/2025
4.25.731.155 87 7/31/2025
4.25.724.1 483 7/23/2025
4.25.720.80 185 7/20/2025
4.25.716.42 112 7/15/2025
4.25.617.153 136 6/17/2025
4.25.616.190 125 6/16/2025
4.25.616.182 116 6/16/2025
4.25.613.111 262 6/13/2025
4.25.609.190 433 6/9/2025
4.25.609.181 391 6/9/2025 4.25.609.181 is deprecated because it has critical bugs.
4.25.609.163 390 6/9/2025 4.25.609.163 is deprecated because it has critical bugs.
4.25.609.140 381 6/9/2025 4.25.609.140 is deprecated because it has critical bugs.
4.25.605.171 314 6/5/2025 4.25.605.171 is deprecated because it has critical bugs.
4.25.605.104 315 6/5/2025 4.25.605.104 is deprecated because it has critical bugs.
4.25.602.41 320 6/1/2025 4.25.602.41 is deprecated because it has critical bugs.
4.25.526.140 329 5/26/2025 4.25.526.140 is deprecated because it has critical bugs.
4.25.513.101 416 5/13/2025 4.25.513.101 is deprecated because it has critical bugs.
4.25.506.150 329 5/6/2025 4.25.506.150 is deprecated because it has critical bugs.
4.25.429.162 333 4/29/2025 4.25.429.162 is deprecated because it has critical bugs.
4.25.429.103 360 4/29/2025 4.25.429.103 is deprecated because it has critical bugs.
4.25.411.142 330 4/11/2025 4.25.411.142 is deprecated because it has critical bugs.
4.25.409.92 338 4/9/2025 4.25.409.92 is deprecated because it has critical bugs.
4.25.403.133 336 4/3/2025 4.25.403.133 is deprecated because it has critical bugs.
4.25.319.113 334 3/19/2025 4.25.319.113 is deprecated because it has critical bugs.
4.25.312.103 344 3/12/2025 4.25.312.103 is deprecated because it has critical bugs.
4.25.227.135 291 2/27/2025 4.25.227.135 is deprecated because it has critical bugs.
4.25.221.115 285 2/21/2025 4.25.221.115 is deprecated because it has critical bugs.
4.25.212.95 287 2/12/2025 4.25.212.95 is deprecated because it has critical bugs.
4.25.211.140 287 2/11/2025 4.25.211.140 is deprecated because it has critical bugs.
4.25.124.223 278 1/24/2025 4.25.124.223 is deprecated because it has critical bugs.
4.25.116.110 274 1/16/2025 4.25.116.110 is deprecated because it has critical bugs.
4.25.115.121 247 1/15/2025 4.25.115.121 is deprecated because it has critical bugs.
4.25.114.172 262 1/14/2025 4.25.114.172 is deprecated because it has critical bugs.
4.25.109.111 270 1/9/2025 4.25.109.111 is deprecated because it has critical bugs.
4.25.108.182 269 1/8/2025 4.25.108.182 is deprecated because it has critical bugs.
4.25.108.160 277 1/8/2025 4.25.108.160 is deprecated because it has critical bugs.
4.25.1.1 294 1/1/2025 4.25.1.1 is deprecated because it has critical bugs.
3.24.1224.141 277 12/24/2024 3.24.1224.141 is deprecated because it has critical bugs.
3.24.1216.116 300 12/16/2024 3.24.1216.116 is deprecated because it has critical bugs.
3.24.1206.100 282 12/6/2024 3.24.1206.100 is deprecated because it has critical bugs.
3.24.1205.171 286 12/5/2024 3.24.1205.171 is deprecated because it has critical bugs.
3.24.1202.150 287 12/2/2024 3.24.1202.150 is deprecated because it has critical bugs.
3.24.1126.231 286 11/26/2024 3.24.1126.231 is deprecated because it has critical bugs.
3.24.1126.172 284 11/26/2024 3.24.1126.172 is deprecated because it has critical bugs.
3.24.1126.114 290 11/26/2024 3.24.1126.114 is deprecated because it has critical bugs.
3.24.1126.104 285 11/26/2024 3.24.1126.104 is deprecated because it has critical bugs.
3.24.1125.181 266 11/25/2024 3.24.1125.181 is deprecated because it has critical bugs.
3.24.1125.104 285 11/25/2024 3.24.1125.104 is deprecated because it has critical bugs.
3.24.1121.183 273 11/21/2024 3.24.1121.183 is deprecated because it has critical bugs.
3.24.1120.183 278 11/20/2024 3.24.1120.183 is deprecated because it has critical bugs.
3.24.1119.31 275 11/18/2024 3.24.1119.31 is deprecated because it has critical bugs.
3.24.1115.143 270 11/15/2024 3.24.1115.143 is deprecated because it has critical bugs.
3.24.1113.100 284 11/13/2024 3.24.1113.100 is deprecated because it has critical bugs.
3.24.1112.125 286 11/12/2024 3.24.1112.125 is deprecated because it has critical bugs.
3.24.1107.140 282 11/7/2024 3.24.1107.140 is deprecated because it has critical bugs.
3.24.1107.54 277 11/7/2024 3.24.1107.54 is deprecated because it has critical bugs.
3.24.1107.34 276 11/7/2024 3.24.1107.34 is deprecated because it has critical bugs.
3.24.1105.111 276 11/5/2024 3.24.1105.111 is deprecated because it has critical bugs.
3.24.1103.31 292 11/2/2024 3.24.1103.31 is deprecated because it has critical bugs.
3.24.1103 286 11/2/2024 3.24.1103 is deprecated because it has critical bugs.
3.24.1031.135 279 10/31/2024 3.24.1031.135 is deprecated because it has critical bugs.
3.24.1031.112 276 10/31/2024 3.24.1031.112 is deprecated because it has critical bugs.
3.24.1031.104 276 10/31/2024 3.24.1031.104 is deprecated because it has critical bugs.
3.24.1029.142 286 10/29/2024 3.24.1029.142 is deprecated because it has critical bugs.
3.24.1025.30 283 10/24/2024 3.24.1025.30 is deprecated because it has critical bugs.
3.24.1022.142 272 10/22/2024 3.24.1022.142 is deprecated because it has critical bugs.
3.24.1018.204 335 10/18/2024 3.24.1018.204 is deprecated because it has critical bugs.
3.24.1018.175 322 10/18/2024 3.24.1018.175 is deprecated because it has critical bugs.
3.24.1018.166 329 10/18/2024 3.24.1018.166 is deprecated because it has critical bugs.
3.24.1018.93 334 10/18/2024 3.24.1018.93 is deprecated because it has critical bugs.
3.24.1017.42 282 10/16/2024 3.24.1017.42 is deprecated because it has critical bugs.
3.24.1016.161 284 10/16/2024 3.24.1016.161 is deprecated because it has critical bugs.
3.24.1015.231 282 10/15/2024 3.24.1015.231 is deprecated because it has critical bugs.
3.24.1015.14 286 10/14/2024 3.24.1015.14 is deprecated because it has critical bugs.
3.24.1012.114 282 10/12/2024 3.24.1012.114 is deprecated because it has critical bugs.
3.24.1009.115 289 10/9/2024 3.24.1009.115 is deprecated because it has critical bugs.
3.24.1008.160 279 10/8/2024 3.24.1008.160 is deprecated because it has critical bugs.
3.24.1008.133 287 10/8/2024 3.24.1008.133 is deprecated because it has critical bugs.
3.24.1007.185 287 10/7/2024 3.24.1007.185 is deprecated because it has critical bugs.
3.24.1003.33 290 10/2/2024 3.24.1003.33 is deprecated because it has critical bugs.
3.24.1002.162 284 10/2/2024 3.24.1002.162 is deprecated because it has critical bugs.
3.24.929.143 283 9/29/2024 3.24.929.143 is deprecated because it has critical bugs.
3.24.929.141 286 9/29/2024 3.24.929.141 is deprecated because it has critical bugs.
3.24.929.131 283 9/29/2024 3.24.929.131 is deprecated because it has critical bugs.
3.24.929.122 290 9/29/2024 3.24.929.122 is deprecated because it has critical bugs.
3.24.926.184 284 9/26/2024 3.24.926.184 is deprecated because it has critical bugs.
3.24.926.182 283 9/26/2024 3.24.926.182 is deprecated because it has critical bugs.
3.24.926.175 288 9/26/2024 3.24.926.175 is deprecated because it has critical bugs.
3.24.924.160 283 9/24/2024 3.24.924.160 is deprecated because it has critical bugs.
3.24.924.133 295 9/24/2024 3.24.924.133 is deprecated because it has critical bugs.
3.24.924.124 284 9/24/2024 3.24.924.124 is deprecated because it has critical bugs.
3.24.924.10 287 9/23/2024 3.24.924.10 is deprecated because it has critical bugs.
3.24.924.1 285 9/23/2024 3.24.924.1 is deprecated because it has critical bugs.
3.24.923.234 280 9/23/2024 3.24.923.234 is deprecated because it has critical bugs.
3.24.923.232 278 9/23/2024 3.24.923.232 is deprecated because it has critical bugs.
3.24.923.155 286 9/23/2024 3.24.923.155 is deprecated because it has critical bugs.
3.24.919.92 296 9/19/2024 3.24.919.92 is deprecated because it has critical bugs.
3.24.914.125 301 9/14/2024 3.24.914.125 is deprecated because it has critical bugs.
3.24.914.115 283 9/14/2024 3.24.914.115 is deprecated because it has critical bugs.
3.24.914.111 282 9/14/2024 3.24.914.111 is deprecated because it has critical bugs.
3.24.911.95 287 9/11/2024 3.24.911.95 is deprecated because it has critical bugs.
3.24.908.215 276 9/8/2024 3.24.908.215 is deprecated because it has critical bugs.
3.24.904.200 281 9/4/2024 3.24.904.200 is deprecated because it has critical bugs.
3.24.828.163 288 8/28/2024 3.24.828.163 is deprecated because it has critical bugs.
3.24.820.173 299 8/20/2024 3.24.820.173 is deprecated because it has critical bugs.
3.24.814.92 298 8/14/2024 3.24.814.92 is deprecated because it has critical bugs.
3.24.812.115 297 8/12/2024 3.24.812.115 is deprecated because it has critical bugs.
3.24.802.100 272 8/2/2024 3.24.802.100 is deprecated because it has critical bugs.
3.24.801.162 282 8/1/2024 3.24.801.162 is deprecated because it has critical bugs.
3.24.801.160 276 8/1/2024 3.24.801.160 is deprecated because it has critical bugs.
3.24.801.155 279 8/1/2024 3.24.801.155 is deprecated because it has critical bugs.
3.24.730.164 274 7/30/2024 3.24.730.164 is deprecated because it has critical bugs.
3.24.730.91 266 7/30/2024 3.24.730.91 is deprecated because it has critical bugs.
3.24.724.91 273 7/24/2024 3.24.724.91 is deprecated because it has critical bugs.
3.24.718.105 291 7/18/2024 3.24.718.105 is deprecated because it has critical bugs.
3.24.716.95 302 7/16/2024 3.24.716.95 is deprecated because it has critical bugs.
3.24.712.94 281 7/12/2024 3.24.712.94 is deprecated because it has critical bugs.
3.24.710.14 286 7/9/2024 3.24.710.14 is deprecated because it has critical bugs.
3.24.709.105 284 7/9/2024 3.24.709.105 is deprecated because it has critical bugs.
3.24.704.94 284 7/4/2024 3.24.704.94 is deprecated because it has critical bugs.
3.24.701.90 294 7/1/2024 3.24.701.90 is deprecated because it has critical bugs.
3.24.628.114 290 6/28/2024 3.24.628.114 is deprecated because it has critical bugs.
3.24.627.145 281 6/27/2024 3.24.627.145 is deprecated because it has critical bugs.
3.24.620.160 290 6/20/2024 3.24.620.160 is deprecated because it has critical bugs.
3.24.613.115 284 6/13/2024 3.24.613.115 is deprecated because it has critical bugs.
3.24.612.95 288 6/12/2024 3.24.612.95 is deprecated because it has critical bugs.
3.24.528.90 279 5/28/2024 3.24.528.90 is deprecated because it has critical bugs.
3.24.522.84 296 5/22/2024 3.24.522.84 is deprecated because it has critical bugs.
3.24.512.213 290 5/12/2024 3.24.512.213 is deprecated because it has critical bugs.
3.24.508.112 295 5/8/2024 3.24.508.112 is deprecated because it has critical bugs.
2.2024.428.71 288 4/28/2024 2.2024.428.71 is deprecated because it has critical bugs.
2.2.72 361 4/14/2024 2.2.72 is deprecated because it has critical bugs.
2.2.71 285 4/12/2024 2.2.71 is deprecated because it has critical bugs.
2.2.6 291 4/10/2024 2.2.6 is deprecated because it has critical bugs.
2.2.5 301 3/26/2024 2.2.5 is deprecated because it has critical bugs.
2.2.4 300 3/25/2024 2.2.4 is deprecated because it has critical bugs.
2.2.3 303 3/24/2024 2.2.3 is deprecated because it has critical bugs.
2.2.2 303 3/21/2024 2.2.2 is deprecated because it has critical bugs.
2.2.1 298 3/20/2024 2.2.1 is deprecated because it has critical bugs.
2.2.0 303 3/13/2024 2.2.0 is deprecated because it has critical bugs.
2.1.9 308 2/21/2024 2.1.9 is deprecated because it has critical bugs.
2.1.8 311 2/18/2024 2.1.8 is deprecated because it has critical bugs.
2.1.7 302 2/16/2024 2.1.7 is deprecated because it has critical bugs.
2.1.6 310 2/14/2024 2.1.6 is deprecated because it has critical bugs.
2.1.5 307 2/14/2024 2.1.5 is deprecated because it has critical bugs.
2.1.4 307 2/9/2024 2.1.4 is deprecated because it has critical bugs.
2.1.3 307 2/8/2024 2.1.3 is deprecated because it has critical bugs.
2.1.2 307 2/5/2024 2.1.2 is deprecated because it has critical bugs.
2.1.1.2 364 12/26/2023 2.1.1.2 is deprecated because it has critical bugs.
2.1.1.1 306 12/26/2023 2.1.1.1 is deprecated because it has critical bugs.
2.1.1 306 12/25/2023 2.1.1 is deprecated because it has critical bugs.
2.1.0 329 12/17/2023 2.1.0 is deprecated because it has critical bugs.
2.0.11 312 12/6/2023 2.0.11 is deprecated because it has critical bugs.
2.0.1 311 11/15/2023 2.0.1 is deprecated because it has critical bugs.
2.0.0 292 11/14/2023 2.0.0 is deprecated because it has critical bugs.
1.9.1 316 11/1/2023 1.9.1 is deprecated because it has critical bugs.
1.9.0 308 10/19/2023 1.9.0 is deprecated because it has critical bugs.
1.9.0-preview2 300 10/12/2023 1.9.0-preview2 is deprecated because it has critical bugs.
1.9.0-preview1 285 10/12/2023 1.9.0-preview1 is deprecated because it has critical bugs.
1.8.9 319 10/11/2023 1.8.9 is deprecated because it has critical bugs.
1.8.8 316 10/11/2023 1.8.8 is deprecated because it has critical bugs.
1.8.7-rc2 292 9/21/2023 1.8.7-rc2 is deprecated because it has critical bugs.
1.8.7-rc1 295 9/12/2023 1.8.7-rc1 is deprecated because it has critical bugs.
1.8.6 344 8/31/2023 1.8.6 is deprecated because it has critical bugs.
1.8.5 323 8/25/2023 1.8.5 is deprecated because it has critical bugs.
1.8.4 324 8/24/2023 1.8.4 is deprecated because it has critical bugs.
1.8.3 329 8/23/2023 1.8.3 is deprecated because it has critical bugs.
1.8.2 393 8/22/2023 1.8.2 is deprecated because it has critical bugs.
1.8.1 319 8/18/2023 1.8.1 is deprecated because it has critical bugs.