Compare commits

..

No commits in common. "main" and "coreunstable-1.11.2-beta.1" have entirely different histories.

530 changed files with 3822 additions and 5889 deletions

View File

@ -1,4 +0,0 @@
# see https://github.com/cncf/clomonitor/blob/main/docs/checks.md#exemptions
exemptions:
- check: artifacthub_badge
reason: "Artifact Hub doesn't support .NET packages"

View File

@ -10,9 +10,6 @@ indent_size = 2
insert_final_newline = true insert_final_newline = true
trim_trailing_whitespace = true trim_trailing_whitespace = true
[*.sh]
end_of_line = lf
[*.{cs,cshtml,htm,html,md,py,sln,xml}] [*.{cs,cshtml,htm,html,md,py,sln,xml}]
indent_size = 4 indent_size = 4
@ -163,9 +160,6 @@ dotnet_diagnostic.RS0041.severity = suggestion
# CA1515: Disable making types internal for Tests classes. It is required by xunit # CA1515: Disable making types internal for Tests classes. It is required by xunit
dotnet_diagnostic.CA1515.severity = none dotnet_diagnostic.CA1515.severity = none
# CA2007: Disable Consider calling ConfigureAwait on the awaited task. It is not working with xunit
dotnet_diagnostic.CA2007.severity = none
[**/obj/**.cs] [**/obj/**.cs]
generated_code = true generated_code = true

1
.gitattributes vendored
View File

@ -1 +0,0 @@
*.sh eol=lf

View File

@ -62,7 +62,7 @@ body:
- type: textarea - type: textarea
attributes: attributes:
label: Steps to Reproduce label: Steps to Reproduce
description: Provide a [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). We will close the issue if the repro project you share with us is complex or we cannot reproduce the behavior you are reporting. We cannot investigate custom projects, so don't point us to such, please. description: Provide a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). We will close the issue if the repro project you share with us is complex or we cannot reproduce the behavior you are reporting. We cannot investigate custom projects, so don't point us to such, please.
validations: validations:
required: true required: true
@ -84,11 +84,3 @@ body:
attributes: attributes:
label: Additional Context label: Additional Context
description: Any additional information you think may be relevant to this issue. description: Any additional information you think may be relevant to this issue.
- type: dropdown
attributes:
label: Tip
description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
options:
- "<sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with :+1: to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>"
default: 0

View File

@ -53,11 +53,3 @@ body:
attributes: attributes:
label: Additional context label: Additional context
description: Any additional information you think may be relevant to this feature request. description: Any additional information you think may be relevant to this feature request.
- type: dropdown
attributes:
label: Tip
description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
options:
- "<sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with :+1: to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>"
default: 0

View File

@ -6,54 +6,6 @@ updates:
interval: "daily" interval: "daily"
labels: labels:
- "infra" - "infra"
- package-ecosystem: "docker"
directory: "/examples/MicroserviceExample/WebApi"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "docker"
directory: "examples/MicroserviceExample/WorkerService"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "docker"
directory: "test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "docker"
directory: "test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"
- package-ecosystem: "dotnet-sdk" - package-ecosystem: "dotnet-sdk"
directory: "/" directory: "/"
schedule: schedule:
@ -66,10 +18,3 @@ updates:
update-types: update-types:
- "version-update:semver-major" - "version-update:semver-major"
- "version-update:semver-minor" - "version-update:semver-minor"
- package-ecosystem: "pip"
directory: "test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests"
schedule:
interval: "weekly"
day: "wednesday"
labels:
- "infra"

View File

@ -28,9 +28,6 @@ on:
required: false required: false
type: string type: string
permissions:
contents: read
jobs: jobs:
build-test: build-test:
@ -49,21 +46,15 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit. MinVer needs to find # Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we # the version tag which is typically NOT on the first commit so we
# retrieve them all. # retrieve them all.
fetch-depth: 0 fetch-depth: 0
- name: Setup previous .NET runtimes - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
- name: Setup .NET
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
- name: dotnet restore ${{ inputs.project-name }} - name: dotnet restore ${{ inputs.project-name }}
run: dotnet restore ${{ inputs.project-name }} ${{ inputs.project-build-commands }} run: dotnet restore ${{ inputs.project-name }} ${{ inputs.project-build-commands }}
@ -72,18 +63,7 @@ jobs:
run: dotnet build ${{ inputs.project-name }} --configuration Release --no-restore ${{ inputs.project-build-commands }} run: dotnet build ${{ inputs.project-name }} --configuration Release --no-restore ${{ inputs.project-build-commands }}
- name: dotnet test ${{ inputs.project-name }} - name: dotnet test ${{ inputs.project-name }}
run: > run: dotnet test ${{ inputs.project-name }} --collect:"Code Coverage" --results-directory:TestResults --framework ${{ matrix.version }} --configuration Release --no-restore --no-build --logger:"console;verbosity=detailed" -- RunConfiguration.DisableAppDomain=true
dotnet test ${{ inputs.project-name }}
--collect:"Code Coverage"
--results-directory:TestResults
--framework ${{ matrix.version }}
--configuration Release
--no-restore
--no-build
--logger:"console;verbosity=detailed"
--logger:"GitHubActions;report-warnings=false"
--logger:"junit;LogFilePath=TestResults/junit.xml"
-- RunConfiguration.DisableAppDomain=true
- name: Install coverage tool - name: Install coverage tool
run: dotnet tool install -g dotnet-coverage run: dotnet tool install -g dotnet-coverage
@ -92,24 +72,15 @@ jobs:
run: dotnet-coverage merge -f cobertura -o ./TestResults/Cobertura.xml ./TestResults/**/*.coverage run: dotnet-coverage merge -f cobertura -o ./TestResults/Cobertura.xml ./TestResults/**/*.coverage
- name: Upload code coverage ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} - name: Upload code coverage ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0 uses: codecov/codecov-action@v5
continue-on-error: true # Note: Don't fail for upload failures continue-on-error: true # Note: Don't fail for upload failures
env: env:
OS: ${{ matrix.os }} OS: ${{ matrix.os }}
TFM: ${{ matrix.version }} TFM: ${{ matrix.version }}
token: ${{ secrets.CODECOV_TOKEN }}
with: with:
files: TestResults/Cobertura.xml file: TestResults/Cobertura.xml
env_vars: OS,TFM env_vars: OS,TFM
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
name: Code Coverage for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}] name: Code Coverage for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}]
codecov_yml_path: .github/codecov.yml codecov_yml_path: .github/codecov.yml
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test results ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
if: ${{ !cancelled() && hashFiles('./**/TestResults/junit.xml') != '' }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
env_vars: OS,TFM
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
name: Test results for ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} on [${{ matrix.os }}.${{ matrix.version }}]
token: ${{ secrets.CODECOV_TOKEN }}

View File

@ -7,19 +7,18 @@ on:
branches: [ 'main*' ] branches: [ 'main*' ]
permissions: permissions:
contents: read issues: write
pull-requests: write
jobs: jobs:
add-labels-on-issues: add-labels-on-issues:
permissions:
issues: write
if: github.event_name == 'issues' && !github.event.issue.pull_request if: github.event_name == 'issues' && !github.event.issue.pull_request
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
- name: Add labels for package found in bug issue descriptions - name: Add labels for package found in bug issue descriptions
shell: pwsh shell: pwsh
@ -34,15 +33,13 @@ jobs:
ISSUE_BODY: ${{ github.event.issue.body }} ISSUE_BODY: ${{ github.event.issue.body }}
add-labels-on-pull-requests: add-labels-on-pull-requests:
permissions:
pull-requests: write
if: github.event_name == 'pull_request_target' if: github.event_name == 'pull_request_target'
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
ref: ${{ github.event.repository.default_branch }} # Note: Do not run on the PR branch we want to execute add-labels.psm1 from main on the base repo only because pull_request_target can see secrets ref: ${{ github.event.repository.default_branch }} # Note: Do not run on the PR branch we want to execute add-labels.psm1 from main on the base repo only because pull_request_target can see secrets

View File

@ -15,9 +15,6 @@ on:
OPENTELEMETRYBOT_GITHUB_TOKEN: OPENTELEMETRYBOT_GITHUB_TOKEN:
required: false required: false
permissions:
contents: read
jobs: jobs:
resolve-automation: resolve-automation:

View File

@ -9,9 +9,6 @@ on:
pull_request: pull_request:
branches: [ 'main*' ] branches: [ 'main*' ]
permissions:
contents: read
jobs: jobs:
lint-misspell-sanitycheck: lint-misspell-sanitycheck:
uses: ./.github/workflows/sanitycheck.yml uses: ./.github/workflows/sanitycheck.yml
@ -21,8 +18,8 @@ jobs:
outputs: outputs:
changes: ${{ steps.changes.outputs.changes }} changes: ${{ steps.changes.outputs.changes }}
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
- uses: AurorNZ/paths-filter@3b1f3abc3371cca888d8eb03dfa70bc8a9867629 # v4.0.0 - uses: AurorNZ/paths-filter@v4
id: changes id: changes
with: with:
filters: | filters: |
@ -116,7 +113,7 @@ jobs:
matrix: matrix:
version: [ net8.0, net9.0 ] version: [ net8.0, net9.0 ]
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
- name: Run OTLP Exporter docker compose - name: Run OTLP Exporter docker compose
run: docker compose --file=test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build run: docker compose --file=test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/IntegrationTest/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build
@ -134,7 +131,7 @@ jobs:
matrix: matrix:
version: [ net8.0, net9.0 ] version: [ net8.0, net9.0 ]
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
- name: Run W3C Trace Context docker compose - name: Run W3C Trace Context docker compose
run: docker compose --file=test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build run: docker compose --file=test/OpenTelemetry.Instrumentation.W3cTraceContext.Tests/docker-compose.yml --file=build/docker-compose.${{ matrix.version }}.yml --project-directory=. up --exit-code-from=tests --build

View File

@ -1,71 +1,46 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL" name: "CodeQL"
on: on:
push:
branches: [ 'main' ]
pull_request:
branches: [ 'main' ]
schedule: schedule:
- cron: '0 0 * * *' # once in a day at 00:00 - cron: '0 0 * * *' # once in a day at 00:00
workflow_dispatch: workflow_dispatch:
permissions: {}
jobs: jobs:
analyze: analyze:
permissions: name: Analyze
actions: read # for github/codeql-action/init to get workflow details
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/analyze to upload SARIF results
runs-on: windows-latest runs-on: windows-latest
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
language: ['actions', 'csharp'] language: ['csharp']
steps: steps:
- name: Configure Pagefile - name: configure Pagefile
if: matrix.language == 'csharp' uses: al-cheb/configure-pagefile-action@v1.4
uses: al-cheb/configure-pagefile-action@a3b6ebd6b634da88790d9c58d4b37a7f4a7b8708 # v1.4
with: with:
minimum-size: 8GB minimum-size: 8GB
maximum-size: 32GB maximum-size: 32GB
disk-root: "D:" disk-root: "D:"
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with:
filter: 'tree:0'
persist-credentials: false
show-progress: false
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 uses: github/codeql-action/init@v3
with: with:
build-mode: none
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
- name: Setup dotnet
uses: actions/setup-dotnet@v4
- name: dotnet pack
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0 uses: github/codeql-action/analyze@v3
with:
category: '/language:${{ matrix.language }}'
codeql:
if: ${{ !cancelled() }}
needs: [ analyze ]
runs-on: ubuntu-latest
steps:
- name: Report status
shell: bash
env:
SCAN_SUCCESS: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
run: |
if [ "${SCAN_SUCCESS}" == "true" ]
then
echo 'CodeQL analysis successful'
else
echo 'CodeQL analysis failed'
exit 1
fi

View File

@ -5,9 +5,6 @@ name: Concurrency Tests
on: on:
workflow_call: workflow_call:
permissions:
contents: read
jobs: jobs:
run-concurrency-tests: run-concurrency-tests:
@ -20,10 +17,10 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: Run Coyote Tests - name: Run Coyote Tests
shell: pwsh shell: pwsh
@ -31,7 +28,7 @@ jobs:
- name: Publish Artifacts - name: Publish Artifacts
if: always() && !cancelled() if: always() && !cancelled()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 uses: actions/upload-artifact@v4
with: with:
name: ${{ matrix.os }}-${{ matrix.project }}-${{ matrix.version }}-coyoteoutput name: ${{ matrix.os }}-${{ matrix.project }}-${{ matrix.version }}-coyoteoutput
path: '**/*_CoyoteOutput.*' path: '**/*_CoyoteOutput.*'

View File

@ -5,19 +5,16 @@ name: Build docfx
on: on:
workflow_call: workflow_call:
permissions:
contents: read
jobs: jobs:
run-docfx-build: run-docfx-build:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: install docfx - name: install docfx
run: dotnet tool install -g docfx run: dotnet tool install -g docfx

View File

@ -5,19 +5,16 @@ name: Lint - dotnet format
on: on:
workflow_call: workflow_call:
permissions:
contents: read
jobs: jobs:
run-dotnet-format-stable: run-dotnet-format-stable:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: dotnet restore - name: dotnet restore
run: dotnet restore OpenTelemetry.sln run: dotnet restore OpenTelemetry.sln
@ -32,10 +29,10 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: dotnet restore - name: dotnet restore
run: dotnet restore OpenTelemetry.sln run: dotnet restore OpenTelemetry.sln

View File

@ -12,9 +12,9 @@ jobs:
fossa: fossa:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: fossas/fossa-action@3ebcea1862c6ffbd5cf1b4d0bd6b3fe7bd6f2cac # v1.7.0 - uses: fossas/fossa-action@93a52ecf7c3ac7eb40f5de77fd69b1a19524de94 # v1.5.0
with: with:
api-key: ${{secrets.FOSSA_API_KEY}} api-key: ${{secrets.FOSSA_API_KEY}}
team: OpenTelemetry team: OpenTelemetry

View File

@ -5,19 +5,16 @@ name: Lint - Markdown
on: on:
workflow_call: workflow_call:
permissions:
contents: read
jobs: jobs:
run-markdownlint: run-markdownlint:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
- name: run markdownlint - name: run markdownlint
uses: DavidAnson/markdownlint-cli2-action@992badcdf24e3b8eb7e87ff9287fe931bcb00c6e # v20.0.0 uses: DavidAnson/markdownlint-cli2-action@v19.1.0
with: with:
globs: | globs: |
**/*.md **/*.md

View File

@ -1,47 +0,0 @@
name: OSSF Scorecard
on:
push:
branches:
- main
schedule:
- cron: "24 5 * * 0" # once a week
workflow_dispatch:
permissions: read-all
jobs:
analysis:
runs-on: ubuntu-latest
permissions:
# Needed for Code scanning upload
security-events: write
# Needed for GitHub OIDC token if publish_results is true
id-token: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
with:
results_file: results.sarif
results_format: sarif
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable
# uploads of run results in SARIF format to the repository Actions tab.
# https://docs.github.com/en/actions/advanced-guides/storing-workflow-data-as-artifacts
- name: "Upload artifact"
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
with:
sarif_file: results.sarif

View File

@ -5,15 +5,12 @@ name: Package Validation
on: on:
workflow_call: workflow_call:
permissions:
contents: read
jobs: jobs:
run-package-validation-stable: run-package-validation-stable:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit. MinVer needs to find # Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we # the version tag which is typically NOT on the first commit so we
@ -21,23 +18,16 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: dotnet pack - name: dotnet pack
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false /p:RunningDotNetPack=true run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false /p:RunningDotNetPack=true
- name: Publish stable NuGet packages to Artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: packages-stable
path: ./artifacts/package/release
if-no-files-found: error
run-package-validation-experimental: run-package-validation-experimental:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit. MinVer needs to find # Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we # the version tag which is typically NOT on the first commit so we
@ -45,14 +35,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: dotnet pack - name: dotnet pack
run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true /p:RunningDotNetPack=true run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true /p:RunningDotNetPack=true
- name: Publish experimental NuGet packages to Artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: packages-experimental
path: ./artifacts/package/release
if-no-files-found: error

View File

@ -16,9 +16,6 @@ on:
types: types:
- created - created
permissions:
contents: read
jobs: jobs:
automation: automation:
uses: ./.github/workflows/automation.yml uses: ./.github/workflows/automation.yml
@ -44,7 +41,7 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
ref: ${{ github.event.repository.default_branch }} ref: ${{ github.event.repository.default_branch }}
@ -78,7 +75,7 @@ jobs:
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }} GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit. We need all the tags # Note: By default GitHub only fetches 1 commit. We need all the tags
# for this work. # for this work.
@ -87,7 +84,7 @@ jobs:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: Create GitHub Pull Request to update stable build version in props - name: Create GitHub Pull Request to update stable build version in props
if: | if: |

View File

@ -23,9 +23,6 @@ on:
types: types:
- created - created
permissions:
contents: read
jobs: jobs:
automation: automation:
uses: ./.github/workflows/automation.yml uses: ./.github/workflows/automation.yml
@ -43,7 +40,7 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
@ -79,7 +76,7 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
@ -113,7 +110,7 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below # Note: By default GitHub only fetches 1 commit which fails the git tag operation below
fetch-depth: 0 fetch-depth: 0
@ -152,7 +149,7 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below # Note: By default GitHub only fetches 1 commit which fails the git tag operation below
fetch-depth: 0 fetch-depth: 0
@ -191,15 +188,13 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below # Note: By default GitHub only fetches 1 commit which fails the git tag operation below
fetch-depth: 0 fetch-depth: 0
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
- name: Update release notes - name: Update release notes
env:
COMMENT_BODY: ${{ github.event.comment.body }}
shell: pwsh shell: pwsh
run: | run: |
Import-Module .\build\scripts\prepare-release.psm1 Import-Module .\build\scripts\prepare-release.psm1
@ -209,6 +204,6 @@ jobs:
-pullRequestNumber '${{ github.event.issue.number }}' ` -pullRequestNumber '${{ github.event.issue.number }}' `
-botUserName '${{ needs.automation.outputs.username }}' ` -botUserName '${{ needs.automation.outputs.username }}' `
-commentUserName '${{ github.event.comment.user.login }}' ` -commentUserName '${{ github.event.comment.user.login }}' `
-commentBody $Env:COMMENT_BODY ` -commentBody '${{ github.event.comment.body }}' `
-gitUserName '${{ needs.automation.outputs.username }}' ` -gitUserName '${{ needs.automation.outputs.username }}' `
-gitUserEmail '${{ needs.automation.outputs.email }}' -gitUserEmail '${{ needs.automation.outputs.email }}'

View File

@ -16,9 +16,6 @@ on:
schedule: schedule:
- cron: '0 0 * * *' # once in a day at 00:00 - cron: '0 0 * * *' # once in a day at 00:00
permissions:
contents: read
jobs: jobs:
automation: automation:
uses: ./.github/workflows/automation.yml uses: ./.github/workflows/automation.yml
@ -38,7 +35,7 @@ jobs:
artifact-id: ${{ steps.upload-artifacts.outputs.artifact-id }} artifact-id: ${{ steps.upload-artifacts.outputs.artifact-id }}
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
with: with:
# Note: By default GitHub only fetches 1 commit. MinVer needs to find # Note: By default GitHub only fetches 1 commit. MinVer needs to find
# the version tag which is typically NOT on the first commit so we # the version tag which is typically NOT on the first commit so we
@ -46,12 +43,12 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: Install Cosign - name: Install Cosign
uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2 uses: sigstore/cosign-installer@v3
with: with:
cosign-release: v2.5.3 cosign-release: v2.4.0
- name: dotnet restore - name: dotnet restore
run: dotnet restore ./build/OpenTelemetry.proj -p:RunningDotNetPack=true run: dotnet restore ./build/OpenTelemetry.proj -p:RunningDotNetPack=true
@ -67,7 +64,7 @@ jobs:
foreach ($projectFile in $projectFiles) { foreach ($projectFile in $projectFiles) {
$projectName = [System.IO.Path]::GetFileNameWithoutExtension($projectFile) $projectName = [System.IO.Path]::GetFileNameWithoutExtension($projectFile)
Get-ChildItem -Path artifacts/bin/$projectName/release_*/$projectName.dll -File | ForEach-Object { Get-ChildItem -Path src/$projectName/bin/Release/*/$projectName.dll -File | ForEach-Object {
$fileFullPath = $_.FullName $fileFullPath = $_.FullName
Write-Host "Signing $fileFullPath" Write-Host "Signing $fileFullPath"
@ -80,11 +77,10 @@ jobs:
- name: Publish Artifacts - name: Publish Artifacts
id: upload-artifacts id: upload-artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 uses: actions/upload-artifact@v4
with: with:
name: ${{ github.ref_name }}-packages name: ${{ github.ref_name }}-packages
path: ./artifacts/package/release path: 'src/**/*.*nupkg'
if-no-files-found: error
- name: Publish MyGet - name: Publish MyGet
env: env:
@ -92,7 +88,7 @@ jobs:
if: env.MYGET_TOKEN_EXISTS == 'true' # Skip MyGet publish if run on a fork without the secret if: env.MYGET_TOKEN_EXISTS == 'true' # Skip MyGet publish if run on a fork without the secret
run: | run: |
nuget setApiKey ${{ secrets.MYGET_TOKEN }} -Source https://www.myget.org/F/opentelemetry/api/v2/package nuget setApiKey ${{ secrets.MYGET_TOKEN }} -Source https://www.myget.org/F/opentelemetry/api/v2/package
nuget push ./artifacts/package/release/*.nupkg -Source https://www.myget.org/F/opentelemetry/api/v2/package nuget push src/**/*.nupkg -Source https://www.myget.org/F/opentelemetry/api/v2/package
post-build: post-build:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
@ -108,7 +104,7 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
with: with:
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} token: ${{ secrets[needs.automation.outputs.token-secret-name] }}

View File

@ -5,16 +5,13 @@ name: Lint - Spelling & Encoding
on: on:
workflow_call: workflow_call:
permissions:
contents: read
jobs: jobs:
run-misspell: run-misspell:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
- name: install misspell - name: install misspell
run: | run: |
@ -29,7 +26,7 @@ jobs:
steps: steps:
- name: check out code - name: check out code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@v4
- name: detect non-ASCII encoding and trailing space - name: detect non-ASCII encoding and trailing space
run: python3 ./build/scripts/sanitycheck.py run: python3 ./build/scripts/sanitycheck.py

View File

@ -6,17 +6,11 @@ on:
schedule: schedule:
- cron: "12 3 * * *" # arbitrary time not to DDOS GitHub - cron: "12 3 * * *" # arbitrary time not to DDOS GitHub
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions:
issues: write # for actions/stale to close stale issues
pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 - uses: actions/stale@v9
with: with:
stale-issue-message: 'This issue was marked stale due to lack of activity and will be closed in 7 days. Commenting will instruct the bot to automatically remove the label. This bot runs once per day.' stale-issue-message: 'This issue was marked stale due to lack of activity and will be closed in 7 days. Commenting will instruct the bot to automatically remove the label. This bot runs once per day.'
close-issue-message: 'Closed as inactive. Feel free to reopen if this issue is still a concern.' close-issue-message: 'Closed as inactive. Feel free to reopen if this issue is still a concern.'
@ -28,5 +22,4 @@ jobs:
days-before-pr-close: 7 days-before-pr-close: 7
days-before-issue-close: 7 days-before-issue-close: 7
exempt-all-issue-milestones: true exempt-all-issue-milestones: true
exempt-issue-labels: 'keep-open,needs-triage' exempt-issue-labels: needs-triage
exempt-pr-labels: 'keep-open'

View File

@ -5,9 +5,6 @@ name: Publish & Verify AOT Compatibility
on: on:
workflow_call: workflow_call:
permissions:
contents: read
jobs: jobs:
run-verify-aot-compat: run-verify-aot-compat:
@ -19,10 +16,10 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/checkout@v4
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1 uses: actions/setup-dotnet@v4
- name: publish AOT testApp, assert static analysis warning count, and run the app - name: publish AOT testApp, assert static analysis warning count, and run the app
shell: pwsh shell: pwsh

4
.gitignore vendored
View File

@ -21,7 +21,6 @@
x64/ x64/
x86/ x86/
bld/ bld/
[Aa]rtifacts/
[Bb]in/ [Bb]in/
[Oo]bj/ [Oo]bj/
[Ll]og/ [Ll]og/
@ -352,6 +351,3 @@ tempo-data/
# Coyote Rewrite Files # Coyote Rewrite Files
rewrite.coyote.json rewrite.coyote.json
# Test results
TestResults/

View File

@ -10,6 +10,3 @@ MD013:
MD033: MD033:
# Allowed elements # Allowed elements
allowed_elements: [ 'details', 'summary' ] allowed_elements: [ 'details', 'summary' ]
# MD059/link-text-should-be-descriptive : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md059.md
MD059: false

View File

@ -14,33 +14,10 @@ Anyone may contribute but there are benefits of being a member of our community.
See the [community membership See the [community membership
document](https://github.com/open-telemetry/community/blob/main/community-membership.md) document](https://github.com/open-telemetry/community/blob/main/community-membership.md)
on how to become a on how to become a
[**Member**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#member), [**Member**](https://github.com/open-telemetry/community/blob/main/community-membership.md#member),
[**Triager**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager), [**Approver**](https://github.com/open-telemetry/community/blob/main/community-membership.md#approver)
[**Approver**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver),
and and
[**Maintainer**](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer). [**Maintainer**](https://github.com/open-telemetry/community/blob/main/community-membership.md#maintainer).
## Give feedback
We are always looking for your feedback.
You can do this by [submitting a GitHub issue](https://github.com/open-telemetry/opentelemetry-dotnet/issues/new).
You may also prefer writing on [#otel-dotnet Slack channel](https://cloud-native.slack.com/archives/C01N3BC2W7Q).
### Report a bug
Reporting bugs is an important contribution. Please make sure to include:
* Expected and actual behavior;
* OpenTelemetry, OS, and .NET versions you are using;
* Steps to reproduce;
* [Minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example).
### Request a feature
If you would like to work on something that is not listed as an issue
(e.g. a new feature or enhancement) please create an issue and describe your proposal.
## Find a buddy and get started quickly ## Find a buddy and get started quickly
@ -323,6 +300,9 @@ types](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-type
* Pass [static * Pass [static
analysis](https://learn.microsoft.com/dotnet/fundamentals/code-analysis/overview). analysis](https://learn.microsoft.com/dotnet/fundamentals/code-analysis/overview).
New projects MUST enable static analysis by specifying
`<AnalysisLevel>latest-all</AnalysisLevel>` in the project file (`.csproj`).
> [!NOTE] > [!NOTE]
> There are other project-level features enabled automatically via > There are other project-level features enabled automatically via
[Common.props](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/build/Common.props) [Common.props](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/build/Common.props)

View File

@ -1,6 +0,0 @@
<Project>
<PropertyGroup>
<ArtifactsPath>$([System.IO.Path]::Combine('$(MSBuildThisFileDirectory)', 'artifacts'))</ArtifactsPath>
<UseArtifactsOutput>true</UseArtifactsOutput>
</PropertyGroup>
</Project>

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<OTelLatestStableVer>1.12.0</OTelLatestStableVer> <OTelLatestStableVer>1.11.2</OTelLatestStableVer>
<!-- <!--
This is typically the latest annual release of .NET. Use this wherever This is typically the latest annual release of .NET. Use this wherever
@ -31,10 +31,13 @@
3) Since version 3.1.0, the .NET runtime team is holding a high bar for backward compatibility on 3) Since version 3.1.0, the .NET runtime team is holding a high bar for backward compatibility on
these packages even during major version bumps, so compatibility is not a concern here. these packages even during major version bumps, so compatibility is not a concern here.
--> -->
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" /> <PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" /> <PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" /> <PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="$(LatestRuntimeOutOfBandVer)" /> <PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="$(LatestRuntimeOutOfBandVer)" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(LatestRuntimeOutOfBandVer)" />
<!-- <!--
OTel packages always point to latest stable release. OTel packages always point to latest stable release.
@ -57,6 +60,15 @@
even during major version bumps, so compatibility is not a concern here. even during major version bumps, so compatibility is not a concern here.
--> -->
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(LatestRuntimeOutOfBandVer)" /> <PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(LatestRuntimeOutOfBandVer)" />
<!--
We use conservative versions of these packages where an upgrade might
introduce breaking changes.
-->
<PackageVersion Include="Google.Protobuf" Version="[3.22.5,4.0)" />
<PackageVersion Include="Grpc" Version="[2.44.0,3.0)" />
<PackageVersion Include="Grpc.Core" Version="[2.44.0,3.0)" />
<PackageVersion Include="Grpc.Net.Client" Version="[2.52.0,3.0)" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -83,16 +95,11 @@
These packages are referenced as "PrivateAssets" or used in tests/examples. These packages are referenced as "PrivateAssets" or used in tests/examples.
--> -->
<ItemGroup> <ItemGroup>
<PackageVersion Include="BenchmarkDotNet" Version="0.15.2" /> <PackageVersion Include="BenchmarkDotNet" Version="[0.13.12,0.14)" />
<PackageVersion Include="CommandLineParser" Version="[2.9.1,3.0)" /> <PackageVersion Include="CommandLineParser" Version="[2.9.1,3.0)" />
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
<PackageVersion Include="Grpc.AspNetCore" Version="[2.59.0,3.0)" /> <PackageVersion Include="Grpc.AspNetCore" Version="[2.59.0,3.0)" />
<PackageVersion Include="Grpc.AspNetCore.Server" Version="[2.59.0, 3.0)" /> <PackageVersion Include="Grpc.AspNetCore.Server" Version="[2.59.0, 3.0)" />
<PackageVersion Include="Grpc.Tools" Version="[2.59.0,3.0)" /> <PackageVersion Include="Grpc.Tools" Version="[2.59.0,3.0)" />
<PackageVersion Include="Google.Protobuf" Version="[3.22.5,4.0)" />
<PackageVersion Include="Grpc" Version="[2.44.0,3.0)" />
<PackageVersion Include="Grpc.Net.Client" Version="[2.52.0,3.0)" />
<PackageVersion Include="JunitXml.TestLogger" Version="6.1.0" />
<PackageVersion Include="Microsoft.CSharp" Version="[4.7.0]" /> <PackageVersion Include="Microsoft.CSharp" Version="[4.7.0]" />
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="[3.11.0-beta1.23525.2]" /> <PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="[3.11.0-beta1.23525.2]" />
<PackageVersion Include="Microsoft.Coyote" Version="1.7.11" /> <PackageVersion Include="Microsoft.Coyote" Version="1.7.11" />
@ -103,6 +110,7 @@
<PackageVersion Include="Microsoft.Extensions.Telemetry.Abstractions" Version="[9.0.0,)" /> <PackageVersion Include="Microsoft.Extensions.Telemetry.Abstractions" Version="[9.0.0,)" />
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="[1.0.3,2.0)" /> <PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="[1.0.3,2.0)" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="[17.13.0,18.0.0)" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="[17.13.0,18.0.0)" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="[8.0.0,9.0)" />
<PackageVersion Include="MinVer" Version="[5.0.0,6.0)" /> <PackageVersion Include="MinVer" Version="[5.0.0,6.0)" />
<PackageVersion Include="NuGet.Versioning" Version="6.11.0" /> <PackageVersion Include="NuGet.Versioning" Version="6.11.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="[1.9.0,2.0)" /> <PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="[1.9.0,2.0)" />

View File

@ -3,14 +3,19 @@
<packageSources> <packageSources>
<clear /> <clear />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" /> <add key="NuGet" value="https://api.nuget.org/v3/index.json" />
<add key="dotnet8" value="https://dnceng.pkgs.visualstudio.com/public/_packaging/dotnet8/nuget/v3/index.json" />
</packageSources> </packageSources>
<!-- Define mappings by adding package patterns beneath the target source. --> <!-- Define mappings by adding package patterns beneath the target source. -->
<!-- *.Tools packages will be restored from ".Net Core Tools", everything else from nuget.org. -->
<packageSourceMapping> <packageSourceMapping>
<!-- key value for <packageSource> should match key values from <packageSources> element --> <!-- key value for <packageSource> should match key values from <packageSources> element -->
<packageSource key="NuGet"> <packageSource key="NuGet">
<package pattern="*" /> <package pattern="*" />
</packageSource> </packageSource>
<packageSource key="dotnet8">
<package pattern="Microsoft.CodeAnalysis.PublicApiAnalyzers" />
</packageSource>
</packageSourceMapping> </packageSourceMapping>
<disabledPackageSources /> <disabledPackageSources />

View File

@ -254,6 +254,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{A49299
src\Shared\ExceptionExtensions.cs = src\Shared\ExceptionExtensions.cs src\Shared\ExceptionExtensions.cs = src\Shared\ExceptionExtensions.cs
src\Shared\Guard.cs = src\Shared\Guard.cs src\Shared\Guard.cs = src\Shared\Guard.cs
src\Shared\MathHelper.cs = src\Shared\MathHelper.cs src\Shared\MathHelper.cs = src\Shared\MathHelper.cs
src\Shared\PeerServiceResolver.cs = src\Shared\PeerServiceResolver.cs
src\Shared\PeriodicExportingMetricReaderHelper.cs = src\Shared\PeriodicExportingMetricReaderHelper.cs src\Shared\PeriodicExportingMetricReaderHelper.cs = src\Shared\PeriodicExportingMetricReaderHelper.cs
src\Shared\PooledList.cs = src\Shared\PooledList.cs src\Shared\PooledList.cs = src\Shared\PooledList.cs
src\Shared\ResourceSemanticConventions.cs = src\Shared\ResourceSemanticConventions.cs src\Shared\ResourceSemanticConventions.cs = src\Shared\ResourceSemanticConventions.cs

View File

@ -6,11 +6,6 @@
[![NuGet](https://img.shields.io/nuget/dt/OpenTelemetry.svg)](https://www.nuget.org/profiles/OpenTelemetry) [![NuGet](https://img.shields.io/nuget/dt/OpenTelemetry.svg)](https://www.nuget.org/profiles/OpenTelemetry)
[![Build](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/ci.yml) [![Build](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/open-telemetry/opentelemetry-dotnet/actions/workflows/ci.yml)
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/open-telemetry/opentelemetry-dotnet/badge)](https://scorecard.dev/viewer/?uri=github.com/open-telemetry/opentelemetry-dotnet)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10017/badge)](https://www.bestpractices.dev/projects/10017)
[![FOSSA License Status](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet.svg?type=shield&issueType=license)](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet?ref=badge_shield&issueType=license)
[![FOSSA Security Status](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet.svg?type=shield&issueType=security)](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopen-telemetry%2Fopentelemetry-dotnet?ref=badge_shield&issueType=security)
The .NET [OpenTelemetry](https://opentelemetry.io/) implementation. The .NET [OpenTelemetry](https://opentelemetry.io/) implementation.
<details> <details>
@ -236,38 +231,26 @@ regardless of your experience level. Whether you're a seasoned OpenTelemetry
developer, just starting your journey, or simply curious about the work we do, developer, just starting your journey, or simply curious about the work we do,
you're more than welcome to participate! you're more than welcome to participate!
### Maintainers [Maintainers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer)
([@open-telemetry/dotnet-maintainers](https://github.com/orgs/open-telemetry/teams/dotnet-maintainers)):
* [Alan West](https://github.com/alanwest), New Relic * [Alan West](https://github.com/alanwest), New Relic
* [Rajkumar Rangaraj](https://github.com/rajkumar-rangaraj), Microsoft * [Rajkumar Rangaraj](https://github.com/rajkumar-rangaraj), Microsoft
For more information about the maintainer role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer). [Emeritus Maintainers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager):
### Approvers
* [Cijo Thomas](https://github.com/cijothomas), Microsoft
* [Martin Costello](https://github.com/martincostello), Grafana Labs
* [Mikel Blanchard](https://github.com/CodeBlanch), Microsoft
* [Piotr Kie&#x142;kowicz](https://github.com/Kielek), Splunk
For more information about the approver role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver).
### Triagers
* [Martin Thwaites](https://github.com/martinjt), Honeycomb
* [Timothy "Mothra" Lee](https://github.com/TimothyMothra)
For more information about the triager role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager).
### Emeritus Maintainers
* [Mike Goldsmith](https://github.com/MikeGoldsmith) * [Mike Goldsmith](https://github.com/MikeGoldsmith)
* [Sergey Kanzhelev](https://github.com/SergeyKanzhelev) * [Sergey Kanzhelev](https://github.com/SergeyKanzhelev)
* [Utkarsh Umesan Pillai](https://github.com/utpilla) * [Utkarsh Umesan Pillai](https://github.com/utpilla)
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager). [Approvers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver)
([@open-telemetry/dotnet-approvers](https://github.com/orgs/open-telemetry/teams/dotnet-approvers)):
### Emeritus Approvers * [Cijo Thomas](https://github.com/cijothomas), Microsoft
* [Mikel Blanchard](https://github.com/CodeBlanch), Microsoft
* [Piotr Kie&#x142;kowicz](https://github.com/Kielek), Splunk
[Emeritus Approvers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager):
* [Bruno Garcia](https://github.com/bruno-garcia) * [Bruno Garcia](https://github.com/bruno-garcia)
* [Eddy Nakamura](https://github.com/eddynaka) * [Eddy Nakamura](https://github.com/eddynaka)
@ -277,14 +260,16 @@ For more information about the emeritus role, see the [community repository](htt
* [Robert Paj&#x105;k](https://github.com/pellared) * [Robert Paj&#x105;k](https://github.com/pellared)
* [Vishwesh Bankwar](https://github.com/vishweshbankwar) * [Vishwesh Bankwar](https://github.com/vishweshbankwar)
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager). [Triagers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager)
([@open-telemetry/dotnet-triagers](https://github.com/orgs/open-telemetry/teams/dotnet-triagers)):
### Emeritus Triagers * [Martin Thwaites](https://github.com/martinjt), Honeycomb
* [Timothy "Mothra" Lee](https://github.com/TimothyMothra), Microsoft
[Emeritus Triagers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager):
* [Victor Lu](https://github.com/victlu) * [Victor Lu](https://github.com/victlu)
For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
### Thanks to all the people who have contributed ### Thanks to all the people who have contributed
[![contributors](https://contributors-img.web.app/image?repo=open-telemetry/opentelemetry-dotnet)](https://github.com/open-telemetry/opentelemetry-dotnet/graphs/contributors) [![contributors](https://contributors-img.web.app/image?repo=open-telemetry/opentelemetry-dotnet)](https://github.com/open-telemetry/opentelemetry-dotnet/graphs/contributors)

View File

@ -4,18 +4,6 @@ This file contains highlights and announcements covering all components.
For more details see `CHANGELOG.md` files maintained in the root source For more details see `CHANGELOG.md` files maintained in the root source
directory of each individual package. directory of each individual package.
## 1.12.0
Release details: [1.12.0](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.12.0)
* **Breaking Change**: `OpenTelemetry.Exporter.OpenTelemetryProtocol` now
defaults to using OTLP/HTTP instead of OTLP/gRPC when targeting .NET Framework
and .NET Standard. This change may cause telemetry export to fail unless
appropriate adjustments are made. Explicitly setting OTLP/gRPC may result in a
`NotSupportedException` unless further configuration is applied. See
[#6209](https://github.com/open-telemetry/opentelemetry-dotnet/issues/6209) for
full details and mitigation guidance. [#6229](https://github.com/open-telemetry/opentelemetry-dotnet/pull/6229)
## 1.11.1 ## 1.11.1
Release details: [1.11.1](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.11.1) Release details: [1.11.1](https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/core-1.11.1)

View File

@ -2,7 +2,7 @@
<Import Project=".\Common.props" /> <Import Project=".\Common.props" />
<PropertyGroup> <PropertyGroup>
<NoWarn>$(NoWarn),CS1574,CS1591</NoWarn> <NoWarn>$(NoWarn),1574,1591</NoWarn>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
<CodeAnalysisRuleSet>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\OpenTelemetry.test.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\OpenTelemetry.test.ruleset</CodeAnalysisRuleSet>
</PropertyGroup> </PropertyGroup>
@ -21,18 +21,6 @@
</Content> </Content>
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(IsTestProject)' == 'true'">
<PackageReference Include="GitHubActionsTestLogger" />
<PackageReference Include="JunitXml.TestLogger" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.visualstudio" PrivateAssets="All" />
</ItemGroup>
<ItemGroup Condition="'$(IsTestProject)' == 'true'">
<Compile Include="$(RepoRoot)\test\Shared\StrongNameTests.cs" Link="StrongNameTests.cs" />
</ItemGroup>
<PropertyGroup> <PropertyGroup>
<!-- Running unit tests from VSCode does not work with .NET SDK 6.0.200 without ProduceReferenceAssemblyInOutDir --> <!-- Running unit tests from VSCode does not work with .NET SDK 6.0.200 without ProduceReferenceAssemblyInOutDir -->
<!-- Related breaking change: https://docs.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/write-reference-assemblies-to-obj --> <!-- Related breaking change: https://docs.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/write-reference-assemblies-to-obj -->

View File

@ -18,6 +18,7 @@
<PackageProjectUrl>https://opentelemetry.io</PackageProjectUrl> <PackageProjectUrl>https://opentelemetry.io</PackageProjectUrl>
<Authors>OpenTelemetry Authors</Authors> <Authors>OpenTelemetry Authors</Authors>
<Copyright>Copyright The OpenTelemetry Authors</Copyright> <Copyright>Copyright The OpenTelemetry Authors</Copyright>
<PackageOutputPath Condition="$(Build_ArtifactStagingDirectory) != ''">$(Build_ArtifactStagingDirectory)</PackageOutputPath>
<IncludeSymbols>true</IncludeSymbols> <IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat> <SymbolPackageFormat>snupkg</SymbolPackageFormat>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression> <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
@ -35,8 +36,16 @@
<ContinuousIntegrationBuild Condition="'$(Deterministic)'=='true'">true</ContinuousIntegrationBuild> <ContinuousIntegrationBuild Condition="'$(Deterministic)'=='true'">true</ContinuousIntegrationBuild>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<!-- Note: Disable net6.0 target for package validation because it has been
removed. It should be possible to remove this once a stable version has been
released to NuGet without net6.0. -->
<PackageValidationBaselineFrameworkToIgnore Include="net6.0" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="MinVer" PrivateAssets="All" Condition="'$(IntegrationBuild)' != 'true'" /> <PackageReference Include="MinVer" PrivateAssets="All" Condition="'$(IntegrationBuild)' != 'true'" />
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" Condition="'$(IntegrationBuild)' != 'true'" />
<PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="All" /> <PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" PrivateAssets="All" />
</ItemGroup> </ItemGroup>

View File

@ -4,6 +4,7 @@
<SignAssembly>true</SignAssembly> <SignAssembly>true</SignAssembly>
<RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot> <RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot>
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)debug.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)debug.snk</AssemblyOriginatorKeyFile>
<DefineConstants>$(DefineConstants);SIGNED</DefineConstants>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile> <GenerateDocumentationFile>true</GenerateDocumentationFile>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
@ -13,11 +14,8 @@
<NuGetAuditLevel>low</NuGetAuditLevel> <NuGetAuditLevel>low</NuGetAuditLevel>
<!-- Suppress warnings for repo code using experimental features --> <!-- Suppress warnings for repo code using experimental features -->
<NoWarn>$(NoWarn);OTEL1000;OTEL1001;OTEL1002;OTEL1004</NoWarn> <NoWarn>$(NoWarn);OTEL1000;OTEL1001;OTEL1002;OTEL1004</NoWarn>
<AnalysisLevel>latest-All</AnalysisLevel> <!--temporarily disable. See 3958-->
</PropertyGroup> <!--<AnalysisLevel>latest-All</AnalysisLevel>-->
<PropertyGroup Condition=" '$(SignAssembly)' == 'true' ">
<StrongNamePublicKey>002400000480000094000000060200000024000052534131000400000100010051C1562A090FB0C9F391012A32198B5E5D9A60E9B80FA2D7B434C9E5CCB7259BD606E66F9660676AFC6692B8CDC6793D190904551D2103B7B22FA636DCBB8208839785BA402EA08FC00C8F1500CCEF28BBF599AA64FFB1E1D5DC1BF3420A3777BADFE697856E9D52070A50C3EA5821C80BEF17CA3ACFFA28F89DD413F096F898</StrongNamePublicKey>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="BuildFlags"> <PropertyGroup Label="BuildFlags">

View File

@ -1,3 +1,5 @@
version: '3.7'
services: services:
tests: tests:
build: build:

View File

@ -1,3 +1,5 @@
version: '3.7'
services: services:
tests: tests:
build: build:

View File

@ -24,9 +24,10 @@ if ($LastExitCode -ne 0)
Write-Host $publishOutput Write-Host $publishOutput
} }
$runtime = $IsWindows ? "win-x64" : ($IsMacOS ? "macos-x64" : "linux-x64")
$app = $IsWindows ? "./OpenTelemetry.AotCompatibility.TestApp.exe" : "./OpenTelemetry.AotCompatibility.TestApp" $app = $IsWindows ? "./OpenTelemetry.AotCompatibility.TestApp.exe" : "./OpenTelemetry.AotCompatibility.TestApp"
Push-Location $rootDirectory/artifacts/publish/OpenTelemetry.AotCompatibility.TestApp/release_$targetNetFramework Push-Location $rootDirectory/test/OpenTelemetry.AotCompatibility.TestApp/bin/Release/$targetNetFramework/$runtime
Write-Host "Executing test App..." Write-Host "Executing test App..."
$app $app

View File

@ -1,32 +1,22 @@
param( param(
[Parameter()][string]$coyoteVersion="1.7.11", [Parameter()][string]$coyoteVersion="1.7.10",
[Parameter(Mandatory=$true)][string]$testProjectName, [Parameter(Mandatory=$true)][string]$testProjectName,
[Parameter(Mandatory=$true)][string]$targetFramework, [Parameter(Mandatory=$true)][string]$targetFramework,
[Parameter()][string]$categoryName="CoyoteConcurrencyTests", [Parameter()][string]$categoryName="CoyoteConcurrencyTests",
[Parameter()][string]$configuration="Release" [Parameter()][string]$configuration="Release"
) )
$ErrorActionPreference = "Stop"
$env:OTEL_RUN_COYOTE_TESTS = 'true' $env:OTEL_RUN_COYOTE_TESTS = 'true'
$rootDirectory = Get-Location $rootDirectory = Get-Location
Write-Host "Install Coyote CLI." Write-Host "Install Coyote CLI."
dotnet tool install --global Microsoft.Coyote.CLI --version $coyoteVersion dotnet tool install --global Microsoft.Coyote.CLI
if ($LASTEXITCODE -ne 0) {
throw "Microsoft.Coyote.CLI installation failed with exit code $LASTEXITCODE"
}
Write-Host "Build $testProjectName project." Write-Host "Build $testProjectName project."
dotnet build "$rootDirectory/test/$testProjectName/$testProjectName.csproj" --configuration $configuration dotnet build "$rootDirectory/test/$testProjectName/$testProjectName.csproj" --configuration $configuration
if ($LASTEXITCODE -ne 0) { $artifactsPath = Join-Path $rootDirectory "test/$testProjectName/bin/$configuration/$targetFramework"
throw "dotnet build failed with exit code $LASTEXITCODE"
}
$artifactsPath = Join-Path $rootDirectory "artifacts/bin/$testProjectName/$($configuration.ToLowerInvariant())_$targetFramework"
Write-Host "Generate Coyote rewriting options JSON file." Write-Host "Generate Coyote rewriting options JSON file."
$assemblies = Get-ChildItem $artifactsPath -Filter OpenTelemetry*.dll | ForEach-Object {$_.Name} $assemblies = Get-ChildItem $artifactsPath -Filter OpenTelemetry*.dll | ForEach-Object {$_.Name}
@ -39,13 +29,6 @@ $RewriteOptionsJson | ConvertTo-Json -Compress | Set-Content -Path "$rootDirecto
Write-Host "Run Coyote rewrite." Write-Host "Run Coyote rewrite."
coyote rewrite "$rootDirectory/test/$testProjectName/rewrite.coyote.json" coyote rewrite "$rootDirectory/test/$testProjectName/rewrite.coyote.json"
if ($LASTEXITCODE -ne 0) {
throw "coyote rewrite failed with exit code $LASTEXITCODE"
}
Write-Host "Execute re-written binary." Write-Host "Execute re-written binary."
dotnet test "$artifactsPath/$testProjectName.dll" --framework $targetFramework --filter CategoryName=$categoryName dotnet test "$artifactsPath/$testProjectName.dll" --framework $targetFramework --filter CategoryName=$categoryName
if ($LASTEXITCODE -ne 0) {
throw "dotnet test failed with exit code $LASTEXITCODE"
}

View File

@ -1,11 +1,8 @@
<Project> <Project>
<Import Project="$([System.IO.Path]::Combine($(MSBuildThisFileDirectory), '..', 'Directory.Build.props'))" />
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\Common.nonprod.props" /> <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'OpenTelemetry.sln'))\build\Common.nonprod.props" />
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFrameworks>$(TargetFrameworksForDocs)</TargetFrameworks> <TargetFrameworks>$(TargetFrameworksForDocs)</TargetFrameworks>
<!-- Opt-out of Artifacts Output for docs as there are duplicated project names -->
<UseArtifactsOutput>false</UseArtifactsOutput>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -1,9 +1,7 @@
// Copyright The OpenTelemetry Authors // Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
namespace ComplexObjects; public struct FoodRecallNotice
internal struct FoodRecallNotice
{ {
public string? BrandName { get; set; } public string? BrandName { get; set; }

View File

@ -1,7 +1,6 @@
// Copyright The OpenTelemetry Authors // Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
using ComplexObjects;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using OpenTelemetry.Logs; using OpenTelemetry.Logs;

View File

@ -7,9 +7,7 @@ using OpenTelemetry;
using OpenTelemetry.Logs; using OpenTelemetry.Logs;
using OpenTelemetry.Trace; using OpenTelemetry.Trace;
namespace Correlation; public class Program
internal sealed class Program
{ {
private static readonly ActivitySource MyActivitySource = new("MyCompany.MyProduct.MyLibrary"); private static readonly ActivitySource MyActivitySource = new("MyCompany.MyProduct.MyLibrary");

View File

@ -6,7 +6,7 @@ using OpenTelemetry.Logs;
namespace DedicatedLogging; namespace DedicatedLogging;
internal static class DedicatedLoggingServiceCollectionExtensions public static class DedicatedLoggingServiceCollectionExtensions
{ {
public static IServiceCollection AddDedicatedLogging( public static IServiceCollection AddDedicatedLogging(
this IServiceCollection services, this IServiceCollection services,

View File

@ -3,10 +3,10 @@
namespace DedicatedLogging; namespace DedicatedLogging;
internal interface IDedicatedLogger : ILogger public interface IDedicatedLogger : ILogger
{ {
} }
internal interface IDedicatedLogger<out TCategoryName> : IDedicatedLogger public interface IDedicatedLogger<out TCategoryName> : IDedicatedLogger
{ {
} }

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<NoWarn>$(NoWarn);CA1812;CA2213</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Extensions.Hosting\OpenTelemetry.Extensions.Hosting.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Extensions.Hosting\OpenTelemetry.Extensions.Hosting.csproj" />

View File

@ -5,7 +5,7 @@ using System.Text;
using OpenTelemetry; using OpenTelemetry;
using OpenTelemetry.Logs; using OpenTelemetry.Logs;
internal sealed class MyExporter : BaseExporter<LogRecord> internal class MyExporter : BaseExporter<LogRecord>
{ {
private readonly string name; private readonly string name;
@ -59,7 +59,6 @@ internal sealed class MyExporter : BaseExporter<LogRecord>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing);
Console.WriteLine($"{this.name}.Dispose({disposing})"); Console.WriteLine($"{this.name}.Dispose({disposing})");
} }
} }

View File

@ -4,7 +4,7 @@
using OpenTelemetry; using OpenTelemetry;
using OpenTelemetry.Logs; using OpenTelemetry.Logs;
internal sealed class MyProcessor : BaseProcessor<LogRecord> internal class MyProcessor : BaseProcessor<LogRecord>
{ {
private readonly string name; private readonly string name;
@ -32,7 +32,6 @@ internal sealed class MyProcessor : BaseProcessor<LogRecord>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing);
Console.WriteLine($"{this.name}.Dispose({disposing})"); Console.WriteLine($"{this.name}.Dispose({disposing})");
} }
} }

View File

@ -6,7 +6,7 @@ using OpenTelemetry;
namespace ExtendingTheSdk; namespace ExtendingTheSdk;
internal sealed class Program public class Program
{ {
public static void Main() public static void Main()
{ {
@ -29,16 +29,16 @@ internal sealed class Program
// logger.LogInformation($"Hello from potato {0.99}."); // logger.LogInformation($"Hello from potato {0.99}.");
// structured log with template // structured log with template
logger.LogInformation("Hello from {Name} {Price}.", "tomato", 2.99); logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
// structured log with strong type // structured log with strong type
logger.LogInformation("{Food}", new Food { Name = "artichoke", Price = 3.99 }); logger.LogInformation("{food}", new Food { Name = "artichoke", Price = 3.99 });
// structured log with anonymous type // structured log with anonymous type
logger.LogInformation("{Food}", new { Name = "pumpkin", Price = 5.99 }); logger.LogInformation("{food}", new { Name = "pumpkin", Price = 5.99 });
// structured log with general type // structured log with general type
logger.LogInformation("{Food}", new Dictionary<string, object> logger.LogInformation("{food}", new Dictionary<string, object>
{ {
["Name"] = "truffle", ["Name"] = "truffle",
["Price"] = 299.99, ["Price"] = 299.99,
@ -48,11 +48,11 @@ internal sealed class Program
using (logger.BeginScope("[operation]")) using (logger.BeginScope("[operation]"))
using (logger.BeginScope("[hardware]")) using (logger.BeginScope("[hardware]"))
{ {
logger.LogError("{Name} is broken.", "refrigerator"); logger.LogError("{name} is broken.", "refrigerator");
} }
// message will be redacted by MyRedactionProcessor // message will be redacted by MyRedactionProcessor
logger.LogInformation("OpenTelemetry {SensitiveString}.", "<secret>"); logger.LogInformation("OpenTelemetry {sensitiveString}.", "<secret>");
} }
internal struct Food internal struct Food

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA2000;CA1848;CA1510;CA1305</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA2213;CA1812;CA1307</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -59,7 +59,7 @@ too frequently. `Meter` is fairly expensive and meant to be reused throughout
the application. For most applications, it can be modeled as static readonly the application. For most applications, it can be modeled as static readonly
field (e.g. [Program.cs](./getting-started-console/Program.cs)) or singleton via field (e.g. [Program.cs](./getting-started-console/Program.cs)) or singleton via
dependency injection (e.g. dependency injection (e.g.
[InstrumentationSource.cs](../../examples/AspNetCore/InstrumentationSource.cs)). [Instrumentation.cs](../../examples/AspNetCore/Instrumentation.cs)).
:heavy_check_mark: You should use dot-separated :heavy_check_mark: You should use dot-separated
[UpperCamelCase](https://en.wikipedia.org/wiki/Camel_case) as the [UpperCamelCase](https://en.wikipedia.org/wiki/Camel_case) as the
@ -97,7 +97,7 @@ frequently. Instruments are fairly expensive and meant to be reused throughout
the application. For most applications, instruments can be modeled as static the application. For most applications, instruments can be modeled as static
readonly fields (e.g. [Program.cs](./getting-started-console/Program.cs)) or readonly fields (e.g. [Program.cs](./getting-started-console/Program.cs)) or
singleton via dependency injection (e.g. singleton via dependency injection (e.g.
[InstrumentationSource.cs](../../examples/AspNetCore/InstrumentationSource.cs)). [Instrumentation.cs](../../examples/AspNetCore/Instrumentation.cs)).
:stop_sign: You should avoid invalid instrument names. :stop_sign: You should avoid invalid instrument names.

View File

@ -8,7 +8,7 @@ using OpenTelemetry.Resources;
namespace CustomizingTheSdk; namespace CustomizingTheSdk;
internal static class Program public class Program
{ {
private static readonly Meter Meter1 = new("CompanyA.ProductA.Library1", "1.0"); private static readonly Meter Meter1 = new("CompanyA.ProductA.Library1", "1.0");
private static readonly Meter Meter2 = new("CompanyA.ProductB.Library2", "1.0"); private static readonly Meter Meter2 = new("CompanyA.ProductB.Library2", "1.0");

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA5394</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -8,9 +8,7 @@ using OpenTelemetry.Exporter;
using OpenTelemetry.Metrics; using OpenTelemetry.Metrics;
using OpenTelemetry.Trace; using OpenTelemetry.Trace;
namespace Exemplars; public class Program
internal static class Program
{ {
private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Exemplar"); private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Exemplar");
private static readonly Meter MyMeter = new("OpenTelemetry.Demo.Exemplar"); private static readonly Meter MyMeter = new("OpenTelemetry.Demo.Exemplar");

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA5394</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.OpenTelemetryProtocol\OpenTelemetry.Exporter.OpenTelemetryProtocol.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.OpenTelemetryProtocol\OpenTelemetry.Exporter.OpenTelemetryProtocol.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -5,7 +5,7 @@ using System.Text;
using OpenTelemetry; using OpenTelemetry;
using OpenTelemetry.Metrics; using OpenTelemetry.Metrics;
internal sealed class MyExporter : BaseExporter<Metric> internal class MyExporter : BaseExporter<Metric>
{ {
private readonly string name; private readonly string name;
@ -52,7 +52,6 @@ internal sealed class MyExporter : BaseExporter<Metric>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing);
Console.WriteLine($"{this.name}.Dispose({disposing})"); Console.WriteLine($"{this.name}.Dispose({disposing})");
} }
} }

View File

@ -8,7 +8,7 @@ using OpenTelemetry.Metrics;
namespace ExtendingTheSdk; namespace ExtendingTheSdk;
internal static class Program public class Program
{ {
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0"); private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter"); private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter");

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA2000;CA1510;CA1305</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -5,9 +5,7 @@ using System.Diagnostics.Metrics;
using OpenTelemetry; using OpenTelemetry;
using OpenTelemetry.Metrics; using OpenTelemetry.Metrics;
namespace GettingStartedConsole; public class Program
internal static class Program
{ {
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0"); private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter"); private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter");

View File

@ -6,9 +6,7 @@ using OpenTelemetry;
using OpenTelemetry.Exporter; using OpenTelemetry.Exporter;
using OpenTelemetry.Metrics; using OpenTelemetry.Metrics;
namespace GettingStartedPrometheusGrafana; public class Program
internal static class Program
{ {
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0"); private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter"); private static readonly Counter<long> MyFruitCounter = MyMeter.CreateCounter<long>("MyFruitCounter");

View File

@ -8,7 +8,7 @@ using OpenTelemetry.Metrics;
namespace LearningMoreInstruments; namespace LearningMoreInstruments;
internal static class Program public class Program
{ {
private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0"); private static readonly Meter MyMeter = new("MyCompany.MyProduct.MyLibrary", "1.0");
private static readonly Histogram<long> MyHistogram = MyMeter.CreateHistogram<long>("MyHistogram"); private static readonly Histogram<long> MyHistogram = MyMeter.CreateHistogram<long>("MyHistogram");

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA5394</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />

View File

@ -1,12 +0,0 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
using Microsoft.Extensions.Logging;
namespace ExtendingTheSdk;
internal static partial class LoggerExtensions
{
[LoggerMessage(LogLevel.Information, "Hello from {Name} {Price}")]
public static partial void HelloFrom(this ILogger logger, string name, double price);
}

View File

@ -3,7 +3,7 @@
using OpenTelemetry.Resources; using OpenTelemetry.Resources;
internal sealed class MyResourceDetector : IResourceDetector internal class MyResourceDetector : IResourceDetector
{ {
public Resource Detect() public Resource Detect()
{ {

View File

@ -11,7 +11,7 @@ using OpenTelemetry.Trace;
namespace ExtendingTheSdk; namespace ExtendingTheSdk;
internal static class Program public class Program
{ {
private static readonly ActivitySource DemoSource = new("OTel.Demo"); private static readonly ActivitySource DemoSource = new("OTel.Demo");
private static readonly Meter MeterDemoSource = new("OTel.Demo"); private static readonly Meter MeterDemoSource = new("OTel.Demo");
@ -55,6 +55,7 @@ internal static class Program
} }
var logger = loggerFactory.CreateLogger("OTel.Demo"); var logger = loggerFactory.CreateLogger("OTel.Demo");
logger.HelloFrom("tomato", 2.99); logger
.LogInformation("Hello from {Name} {Price}", "tomato", 2.99);
} }
} }

View File

@ -49,7 +49,7 @@ too frequently. `ActivitySource` is fairly expensive and meant to be reused
throughout the application. For most applications, it can be modeled as static throughout the application. For most applications, it can be modeled as static
readonly field (e.g. [Program.cs](./getting-started-console/Program.cs)) or readonly field (e.g. [Program.cs](./getting-started-console/Program.cs)) or
singleton via dependency injection (e.g. singleton via dependency injection (e.g.
[InstrumentationSource.cs](../../examples/AspNetCore/InstrumentationSource.cs)). [Instrumentation.cs](../../examples/AspNetCore/Instrumentation.cs)).
:heavy_check_mark: You should use dot-separated :heavy_check_mark: You should use dot-separated
[UpperCamelCase](https://en.wikipedia.org/wiki/Camel_case) as the [UpperCamelCase](https://en.wikipedia.org/wiki/Camel_case) as the

View File

@ -8,7 +8,7 @@ using OpenTelemetry.Trace;
namespace CustomizingTheSdk; namespace CustomizingTheSdk;
internal static class Program public class Program
{ {
private static readonly ActivitySource MyLibraryActivitySource = new( private static readonly ActivitySource MyLibraryActivitySource = new(
"MyCompany.MyProduct.MyLibrary"); "MyCompany.MyProduct.MyLibrary");

View File

@ -4,7 +4,7 @@
using System.Diagnostics; using System.Diagnostics;
using OpenTelemetry; using OpenTelemetry;
internal sealed class MyEnrichingProcessor : BaseProcessor<Activity> internal class MyEnrichingProcessor : BaseProcessor<Activity>
{ {
public override void OnEnd(Activity activity) public override void OnEnd(Activity activity)
{ {

View File

@ -5,7 +5,7 @@ using System.Diagnostics;
using System.Text; using System.Text;
using OpenTelemetry; using OpenTelemetry;
internal sealed class MyExporter : BaseExporter<Activity> internal class MyExporter : BaseExporter<Activity>
{ {
private readonly string name; private readonly string name;
@ -43,7 +43,6 @@ internal sealed class MyExporter : BaseExporter<Activity>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing);
Console.WriteLine($"{this.name}.Dispose({disposing})"); Console.WriteLine($"{this.name}.Dispose({disposing})");
} }
} }

View File

@ -4,7 +4,7 @@
using System.Diagnostics; using System.Diagnostics;
using OpenTelemetry; using OpenTelemetry;
internal sealed class MyProcessor : BaseProcessor<Activity> internal class MyProcessor : BaseProcessor<Activity>
{ {
private readonly string name; private readonly string name;
@ -37,7 +37,6 @@ internal sealed class MyProcessor : BaseProcessor<Activity>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing);
Console.WriteLine($"{this.name}.Dispose({disposing})"); Console.WriteLine($"{this.name}.Dispose({disposing})");
} }
} }

View File

@ -3,7 +3,7 @@
using OpenTelemetry.Resources; using OpenTelemetry.Resources;
internal sealed class MyResourceDetector : IResourceDetector internal class MyResourceDetector : IResourceDetector
{ {
public Resource Detect() public Resource Detect()
{ {

View File

@ -3,7 +3,7 @@
using OpenTelemetry.Trace; using OpenTelemetry.Trace;
internal sealed class MySampler : Sampler internal class MySampler : Sampler
{ {
public override SamplingResult ShouldSample(in SamplingParameters param) public override SamplingResult ShouldSample(in SamplingParameters param)
{ {

View File

@ -8,7 +8,7 @@ using OpenTelemetry.Trace;
namespace ExtendingTheSdk; namespace ExtendingTheSdk;
internal static class Program public class Program
{ {
private static readonly ActivitySource DemoSource = new("OTel.Demo"); private static readonly ActivitySource DemoSource = new("OTel.Demo");

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA2000;CA1812;CA1510</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry\OpenTelemetry.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -5,9 +5,7 @@ using System.Diagnostics;
using OpenTelemetry; using OpenTelemetry;
using OpenTelemetry.Trace; using OpenTelemetry.Trace;
namespace GettingStartedConsole; public class Program
internal static class Program
{ {
private static readonly ActivitySource MyActivitySource = new("MyCompany.MyProduct.MyLibrary"); private static readonly ActivitySource MyActivitySource = new("MyCompany.MyProduct.MyLibrary");
@ -20,10 +18,9 @@ internal static class Program
using (var activity = MyActivitySource.StartActivity("SayHello")) using (var activity = MyActivitySource.StartActivity("SayHello"))
{ {
int[] intArray = [1, 2, 3];
activity?.SetTag("foo", 1); activity?.SetTag("foo", 1);
activity?.SetTag("bar", "Hello, World!"); activity?.SetTag("bar", "Hello, World!");
activity?.SetTag("baz", intArray); activity?.SetTag("baz", new int[] { 1, 2, 3 });
activity?.SetStatus(ActivityStatusCode.Ok); activity?.SetStatus(ActivityStatusCode.Ok);
} }

View File

@ -11,7 +11,7 @@ using OpenTelemetry.Trace;
namespace GettingStartedJaeger; namespace GettingStartedJaeger;
internal static class Program public class Program
{ {
private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Jaeger"); private static readonly ActivitySource MyActivitySource = new("OpenTelemetry.Demo.Jaeger");
@ -33,13 +33,13 @@ internal static class Program
{ {
using (var slow = MyActivitySource.StartActivity("SomethingSlow")) using (var slow = MyActivitySource.StartActivity("SomethingSlow"))
{ {
await client.GetStringAsync(new Uri("https://httpstat.us/200?sleep=1000")).ConfigureAwait(false); await client.GetStringAsync("https://httpstat.us/200?sleep=1000");
await client.GetStringAsync(new Uri("https://httpstat.us/200?sleep=1000")).ConfigureAwait(false); await client.GetStringAsync("https://httpstat.us/200?sleep=1000");
} }
using (var fast = MyActivitySource.StartActivity("SomethingFast")) using (var fast = MyActivitySource.StartActivity("SomethingFast"))
{ {
await client.GetStringAsync(new Uri("https://httpstat.us/301")).ConfigureAwait(false); await client.GetStringAsync("https://httpstat.us/301");
} }
} }
} }

View File

@ -13,7 +13,7 @@ namespace LinksAndParentBasedSamplerExample;
/// links based sampler. If either of these samplers decide to sample, /// links based sampler. If either of these samplers decide to sample,
/// this composite sampler decides to sample. /// this composite sampler decides to sample.
/// </summary> /// </summary>
internal sealed class LinksAndParentBasedSampler : Sampler internal class LinksAndParentBasedSampler : Sampler
{ {
private readonly ParentBasedSampler parentBasedSampler; private readonly ParentBasedSampler parentBasedSampler;
private readonly LinksBasedSampler linksBasedSampler; private readonly LinksBasedSampler linksBasedSampler;

View File

@ -10,7 +10,7 @@ namespace LinksAndParentBasedSamplerExample;
/// A non-probabilistic sampler that samples an activity if ANY of the linked activities /// A non-probabilistic sampler that samples an activity if ANY of the linked activities
/// is sampled. /// is sampled.
/// </summary> /// </summary>
internal sealed class LinksBasedSampler : Sampler internal class LinksBasedSampler : Sampler
{ {
public override SamplingResult ShouldSample(in SamplingParameters samplingParameters) public override SamplingResult ShouldSample(in SamplingParameters samplingParameters)
{ {

View File

@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
namespace LinksAndParentBasedSamplerExample; namespace LinksAndParentBasedSamplerExample;
internal static class Program internal class Program
{ {
private static readonly ActivitySource MyActivitySource = new("LinksAndParentBasedSampler.Example"); private static readonly ActivitySource MyActivitySource = new("LinksAndParentBasedSampler.Example");
@ -37,7 +37,7 @@ internal static class Program
/// Generates a list of activity links. A linked activity is sampled with a probability of 0.1. /// Generates a list of activity links. A linked activity is sampled with a probability of 0.1.
/// </summary> /// </summary>
/// <returns>A list of links.</returns> /// <returns>A list of links.</returns>
private static List<ActivityLink> GetActivityLinks(int seed) private static IEnumerable<ActivityLink> GetActivityLinks(int seed)
{ {
var random = new Random(seed); var random = new Random(seed);
var linkedActivitiesList = new List<ActivityLink>(); var linkedActivitiesList = new List<ActivityLink>();

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA5394</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
namespace LinksCreationWithNewRootActivitiesDemo; namespace LinksCreationWithNewRootActivitiesDemo;
internal static class Program internal class Program
{ {
private static readonly ActivitySource MyActivitySource = new("LinksCreationWithNewRootActivities"); private static readonly ActivitySource MyActivitySource = new("LinksCreationWithNewRootActivities");
@ -21,7 +21,7 @@ internal static class Program
using (var activity = MyActivitySource.StartActivity("OrchestratingActivity")) using (var activity = MyActivitySource.StartActivity("OrchestratingActivity"))
{ {
activity?.SetTag("foo", 1); activity?.SetTag("foo", 1);
await DoFanoutAsync().ConfigureAwait(false); await DoFanoutAsync();
using (var nestedActivity = MyActivitySource.StartActivity("WrapUp")) using (var nestedActivity = MyActivitySource.StartActivity("WrapUp"))
{ {
@ -77,7 +77,7 @@ internal static class Program
} }
// Wait for all tasks to complete // Wait for all tasks to complete
await Task.WhenAll(tasks).ConfigureAwait(false); await Task.WhenAll(tasks);
// Reset to the previous activity now that we are done with the fanout // Reset to the previous activity now that we are done with the fanout
// This will ensure that the rest of the code executes in the context of the original activity. // This will ensure that the rest of the code executes in the context of the original activity.

View File

@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
namespace ReportingExceptions; namespace ReportingExceptions;
internal static class Program public class Program
{ {
private static readonly ActivitySource MyActivitySource = new( private static readonly ActivitySource MyActivitySource = new(
"MyCompany.MyProduct.MyLibrary"); "MyCompany.MyProduct.MyLibrary");
@ -27,7 +27,7 @@ internal static class Program
{ {
using (MyActivitySource.StartActivity("Bar")) using (MyActivitySource.StartActivity("Bar"))
{ {
throw new InvalidOperationException("Oops!"); throw new Exception("Oops!");
} }
} }
} }

View File

@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
namespace StratifiedSamplingByQueryTypeDemo; namespace StratifiedSamplingByQueryTypeDemo;
internal sealed class Program internal class Program
{ {
private static readonly ActivitySource MyActivitySource = new("StratifiedSampling.POC"); private static readonly ActivitySource MyActivitySource = new("StratifiedSampling.POC");

View File

@ -5,7 +5,7 @@ using OpenTelemetry.Trace;
namespace StratifiedSamplingByQueryTypeDemo; namespace StratifiedSamplingByQueryTypeDemo;
internal sealed class StratifiedSampler : Sampler internal class StratifiedSampler : Sampler
{ {
// For this POC, we have two groups. // For this POC, we have two groups.
// 0 is the group corresponding to user-initiated queries where we want a 100% sampling rate. // 0 is the group corresponding to user-initiated queries where we want a 100% sampling rate.

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA5394</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -15,7 +15,7 @@ namespace SDKBasedSpanLevelTailSamplingSample;
/// changed later by a span processor based on span attributes (e.g., failure) that become /// changed later by a span processor based on span attributes (e.g., failure) that become
/// available only by the end of the span. /// available only by the end of the span.
/// </summary> /// </summary>
internal sealed class ParentBasedElseAlwaysRecordSampler : Sampler internal class ParentBasedElseAlwaysRecordSampler : Sampler
{ {
private const double DefaultSamplingProbabilityForRootSpan = 0.1; private const double DefaultSamplingProbabilityForRootSpan = 0.1;
private readonly ParentBasedSampler parentBasedSampler; private readonly ParentBasedSampler parentBasedSampler;

View File

@ -7,7 +7,7 @@ using OpenTelemetry.Trace;
namespace SDKBasedSpanLevelTailSamplingSample; namespace SDKBasedSpanLevelTailSamplingSample;
internal static class Program internal class Program
{ {
private static readonly ActivitySource MyActivitySource = new("SDK.TailSampling.POC"); private static readonly ActivitySource MyActivitySource = new("SDK.TailSampling.POC");

View File

@ -26,7 +26,7 @@ internal sealed class TailSamplingProcessor : BaseProcessor<Activity>
} }
else else
{ {
IncludeForExportIfFailedActivity(activity); this.IncludeForExportIfFailedActivity(activity);
} }
base.OnEnd(activity); base.OnEnd(activity);
@ -42,7 +42,7 @@ internal sealed class TailSamplingProcessor : BaseProcessor<Activity>
// 2. Traces will not be complete: Since this sampling is at a span level, the generated trace will be partial and won't be complete. // 2. Traces will not be complete: Since this sampling is at a span level, the generated trace will be partial and won't be complete.
// For example, if another part of the call tree is successful, those spans may not be sampled in leading to a partial trace. // For example, if another part of the call tree is successful, those spans may not be sampled in leading to a partial trace.
// 3. If multiple exporters are used, this decision will impact all of them: https://github.com/open-telemetry/opentelemetry-dotnet/issues/3861. // 3. If multiple exporters are used, this decision will impact all of them: https://github.com/open-telemetry/opentelemetry-dotnet/issues/3861.
private static void IncludeForExportIfFailedActivity(Activity activity) private void IncludeForExportIfFailedActivity(Activity activity)
{ {
if (activity.Status == ActivityStatusCode.Error) if (activity.Status == ActivityStatusCode.Error)
{ {

View File

@ -1,8 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);CA5394;CA2000</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" /> <ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.Console\OpenTelemetry.Exporter.Console.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -5,7 +5,6 @@ namespace Examples.AspNetCore.Controllers;
using System.Diagnostics; using System.Diagnostics;
using System.Diagnostics.Metrics; using System.Diagnostics.Metrics;
using System.Security.Cryptography;
using Examples.AspNetCore; using Examples.AspNetCore;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -24,24 +23,24 @@ public class WeatherForecastController : ControllerBase
private readonly ActivitySource activitySource; private readonly ActivitySource activitySource;
private readonly Counter<long> freezingDaysCounter; private readonly Counter<long> freezingDaysCounter;
public WeatherForecastController(ILogger<WeatherForecastController> logger, InstrumentationSource instrumentationSource) public WeatherForecastController(ILogger<WeatherForecastController> logger, Instrumentation instrumentation)
{ {
this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
ArgumentNullException.ThrowIfNull(instrumentationSource); ArgumentNullException.ThrowIfNull(instrumentation);
this.activitySource = instrumentationSource.ActivitySource; this.activitySource = instrumentation.ActivitySource;
this.freezingDaysCounter = instrumentationSource.FreezingDaysCounter; this.freezingDaysCounter = instrumentation.FreezingDaysCounter;
} }
[HttpGet] [HttpGet]
public IEnumerable<WeatherForecast> Get() public IEnumerable<WeatherForecast> Get()
{ {
using var scope = this.logger.BeginIdScope(Guid.NewGuid().ToString("N")); using var scope = this.logger.BeginScope("{Id}", Guid.NewGuid().ToString("N"));
// Making a http call here to serve as an example of // Making an http call here to serve as an example of
// how dependency calls will be captured and treated // how dependency calls will be captured and treated
// automatically as child of incoming request. // automatically as child of incoming request.
var res = HttpClient.GetStringAsync(new Uri("http://google.com")).Result; var res = HttpClient.GetStringAsync("http://google.com").Result;
// Optional: Manually create an activity. This will become a child of // Optional: Manually create an activity. This will become a child of
// the activity created from the instrumentation library for AspNetCore. // the activity created from the instrumentation library for AspNetCore.
@ -53,18 +52,22 @@ public class WeatherForecastController : ControllerBase
// a manual activity using Activity.Current?.SetTag() // a manual activity using Activity.Current?.SetTag()
using var activity = this.activitySource.StartActivity("calculate forecast"); using var activity = this.activitySource.StartActivity("calculate forecast");
var rng = new Random();
var forecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast var forecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast
{ {
Date = DateTime.Now.AddDays(index), Date = DateTime.Now.AddDays(index),
TemperatureC = RandomNumberGenerator.GetInt32(-20, 55), TemperatureC = rng.Next(-20, 55),
Summary = Summaries[RandomNumberGenerator.GetInt32(Summaries.Length)], Summary = Summaries[rng.Next(Summaries.Length)],
}) })
.ToArray(); .ToArray();
// Optional: Count the freezing days // Optional: Count the freezing days
this.freezingDaysCounter.Add(forecast.Count(f => f.TemperatureC < 0)); this.freezingDaysCounter.Add(forecast.Count(f => f.TemperatureC < 0));
this.logger.WeatherForecastGenerated(LogLevel.Information, forecast.Length, forecast); this.logger.LogInformation(
"WeatherForecasts generated {count}: {forecasts}",
forecast.Length,
forecast);
return forecast; return forecast;
} }

View File

@ -1,14 +0,0 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
namespace Examples.AspNetCore.Controllers;
internal static partial class WeatherForecastControllerLog
{
private static readonly Func<ILogger, string, IDisposable?> Scope = LoggerMessage.DefineScope<string>("{Id}");
public static IDisposable? BeginIdScope(this ILogger logger, string id) => Scope(logger, id);
[LoggerMessage(EventId = 1, Message = "WeatherForecasts generated {Count}: {Forecasts}")]
public static partial void WeatherForecastGenerated(this ILogger logger, LogLevel logLevel, int count, WeatherForecast[] forecasts);
}

View File

@ -2,7 +2,6 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>$(DefaultTargetFrameworkForExampleApps)</TargetFramework> <TargetFramework>$(DefaultTargetFrameworkForExampleApps)</TargetFramework>
<NoWarn>$(NoWarn);CA1515</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -11,15 +11,15 @@ using System.Diagnostics.Metrics;
/// ActivitySource and Instruments. This avoids possible type collisions /// ActivitySource and Instruments. This avoids possible type collisions
/// with other components in the DI container. /// with other components in the DI container.
/// </summary> /// </summary>
public sealed class InstrumentationSource : IDisposable public class Instrumentation : IDisposable
{ {
internal const string ActivitySourceName = "Examples.AspNetCore"; internal const string ActivitySourceName = "Examples.AspNetCore";
internal const string MeterName = "Examples.AspNetCore"; internal const string MeterName = "Examples.AspNetCore";
private readonly Meter meter; private readonly Meter meter;
public InstrumentationSource() public Instrumentation()
{ {
string? version = typeof(InstrumentationSource).Assembly.GetName().Version?.ToString(); string? version = typeof(Instrumentation).Assembly.GetName().Version?.ToString();
this.ActivitySource = new ActivitySource(ActivitySourceName, version); this.ActivitySource = new ActivitySource(ActivitySourceName, version);
this.meter = new Meter(MeterName, version); this.meter = new Meter(MeterName, version);
this.FreezingDaysCounter = this.meter.CreateCounter<long>("weather.days.freezing", description: "The number of days where the temperature is below freezing"); this.FreezingDaysCounter = this.meter.CreateCounter<long>("weather.days.freezing", description: "The number of days where the temperature is below freezing");

View File

@ -13,20 +13,20 @@ using OpenTelemetry.Trace;
var appBuilder = WebApplication.CreateBuilder(args); var appBuilder = WebApplication.CreateBuilder(args);
// Note: Switch between Zipkin/OTLP/Console by setting UseTracingExporter in appsettings.json. // Note: Switch between Zipkin/OTLP/Console by setting UseTracingExporter in appsettings.json.
var tracingExporter = appBuilder.Configuration.GetValue("UseTracingExporter", defaultValue: "CONSOLE").ToUpperInvariant(); var tracingExporter = appBuilder.Configuration.GetValue("UseTracingExporter", defaultValue: "console").ToLowerInvariant();
// Note: Switch between Prometheus/OTLP/Console by setting UseMetricsExporter in appsettings.json. // Note: Switch between Prometheus/OTLP/Console by setting UseMetricsExporter in appsettings.json.
var metricsExporter = appBuilder.Configuration.GetValue("UseMetricsExporter", defaultValue: "CONSOLE").ToUpperInvariant(); var metricsExporter = appBuilder.Configuration.GetValue("UseMetricsExporter", defaultValue: "console").ToLowerInvariant();
// Note: Switch between Console/OTLP by setting UseLogExporter in appsettings.json. // Note: Switch between Console/OTLP by setting UseLogExporter in appsettings.json.
var logExporter = appBuilder.Configuration.GetValue("UseLogExporter", defaultValue: "CONSOLE").ToUpperInvariant(); var logExporter = appBuilder.Configuration.GetValue("UseLogExporter", defaultValue: "console").ToLowerInvariant();
// Note: Switch between Explicit/Exponential by setting HistogramAggregation in appsettings.json // Note: Switch between Explicit/Exponential by setting HistogramAggregation in appsettings.json
var histogramAggregation = appBuilder.Configuration.GetValue("HistogramAggregation", defaultValue: "EXPLICIT").ToUpperInvariant(); var histogramAggregation = appBuilder.Configuration.GetValue("HistogramAggregation", defaultValue: "explicit").ToLowerInvariant();
// Create a service to expose ActivitySource, and Metric Instruments // Create a service to expose ActivitySource, and Metric Instruments
// for manual instrumentation // for manual instrumentation
appBuilder.Services.AddSingleton<InstrumentationSource>(); appBuilder.Services.AddSingleton<Instrumentation>();
// Clear default logging providers used by WebApplication host. // Clear default logging providers used by WebApplication host.
appBuilder.Logging.ClearProviders(); appBuilder.Logging.ClearProviders();
@ -45,7 +45,7 @@ appBuilder.Services.AddOpenTelemetry()
// Ensure the TracerProvider subscribes to any custom ActivitySources. // Ensure the TracerProvider subscribes to any custom ActivitySources.
builder builder
.AddSource(InstrumentationSource.ActivitySourceName) .AddSource(Instrumentation.ActivitySourceName)
.SetSampler(new AlwaysOnSampler()) .SetSampler(new AlwaysOnSampler())
.AddHttpClientInstrumentation() .AddHttpClientInstrumentation()
.AddAspNetCoreInstrumentation(); .AddAspNetCoreInstrumentation();
@ -55,7 +55,7 @@ appBuilder.Services.AddOpenTelemetry()
switch (tracingExporter) switch (tracingExporter)
{ {
case "ZIPKIN": case "zipkin":
builder.AddZipkinExporter(); builder.AddZipkinExporter();
builder.ConfigureServices(services => builder.ConfigureServices(services =>
@ -65,7 +65,7 @@ appBuilder.Services.AddOpenTelemetry()
}); });
break; break;
case "OTLP": case "otlp":
builder.AddOtlpExporter(otlpOptions => builder.AddOtlpExporter(otlpOptions =>
{ {
// Use IConfiguration directly for Otlp exporter endpoint option. // Use IConfiguration directly for Otlp exporter endpoint option.
@ -84,7 +84,7 @@ appBuilder.Services.AddOpenTelemetry()
// Ensure the MeterProvider subscribes to any custom Meters. // Ensure the MeterProvider subscribes to any custom Meters.
builder builder
.AddMeter(InstrumentationSource.MeterName) .AddMeter(Instrumentation.MeterName)
.SetExemplarFilter(ExemplarFilterType.TraceBased) .SetExemplarFilter(ExemplarFilterType.TraceBased)
.AddRuntimeInstrumentation() .AddRuntimeInstrumentation()
.AddHttpClientInstrumentation() .AddHttpClientInstrumentation()
@ -92,7 +92,7 @@ appBuilder.Services.AddOpenTelemetry()
switch (histogramAggregation) switch (histogramAggregation)
{ {
case "EXPONENTIAL": case "exponential":
builder.AddView(instrument => builder.AddView(instrument =>
{ {
return instrument.GetType().GetGenericTypeDefinition() == typeof(Histogram<>) return instrument.GetType().GetGenericTypeDefinition() == typeof(Histogram<>)
@ -108,10 +108,10 @@ appBuilder.Services.AddOpenTelemetry()
switch (metricsExporter) switch (metricsExporter)
{ {
case "PROMETHEUS": case "prometheus":
builder.AddPrometheusExporter(); builder.AddPrometheusExporter();
break; break;
case "OTLP": case "otlp":
builder.AddOtlpExporter(otlpOptions => builder.AddOtlpExporter(otlpOptions =>
{ {
// Use IConfiguration directly for Otlp exporter endpoint option. // Use IConfiguration directly for Otlp exporter endpoint option.
@ -129,7 +129,7 @@ appBuilder.Services.AddOpenTelemetry()
switch (logExporter) switch (logExporter)
{ {
case "OTLP": case "otlp":
builder.AddOtlpExporter(otlpOptions => builder.AddOtlpExporter(otlpOptions =>
{ {
// Use IConfiguration directly for Otlp exporter endpoint option. // Use IConfiguration directly for Otlp exporter endpoint option.

View File

@ -1,3 +1,4 @@
version: "3"
services: services:
# OTEL Collector to receive logs, metrics and traces from the application # OTEL Collector to receive logs, metrics and traces from the application

View File

@ -6,9 +6,7 @@ distributor:
otlp: otlp:
protocols: protocols:
http: http:
endpoint: 0.0.0.0:4318
grpc: grpc:
endpoint: 0.0.0.0:4317
storage: storage:
trace: trace:

View File

@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>$(DefaultTargetFrameworkForExampleApps)</TargetFramework> <TargetFramework>$(DefaultTargetFrameworkForExampleApps)</TargetFramework>
<NoWarn>$(NoWarn),CA1812</NoWarn> <NoWarn>$(NoWarn),CS0618</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -8,7 +8,7 @@ using System.Text;
namespace Examples.Console; namespace Examples.Console;
internal sealed class InstrumentationWithActivitySource : IDisposable internal class InstrumentationWithActivitySource : IDisposable
{ {
private const string RequestPath = "/api/request"; private const string RequestPath = "/api/request";
private readonly SampleServer server = new(); private readonly SampleServer server = new();
@ -27,7 +27,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
this.server.Dispose(); this.server.Dispose();
} }
private sealed class SampleServer : IDisposable private class SampleServer : IDisposable
{ {
private readonly HttpListener listener = new(); private readonly HttpListener listener = new();
@ -66,7 +66,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
} }
activity?.SetTag("request.content", requestContent); activity?.SetTag("request.content", requestContent);
activity?.SetTag("request.length", requestContent.Length); activity?.SetTag("request.length", requestContent.Length.ToString());
var echo = Encoding.UTF8.GetBytes("echo: " + requestContent); var echo = Encoding.UTF8.GetBytes("echo: " + requestContent);
context.Response.ContentEncoding = Encoding.UTF8; context.Response.ContentEncoding = Encoding.UTF8;
@ -88,7 +88,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
} }
} }
private sealed class SampleClient : IDisposable private class SampleClient : IDisposable
{ {
private CancellationTokenSource? cts; private CancellationTokenSource? cts;
private Task? requestTask; private Task? requestTask;
@ -114,7 +114,7 @@ internal sealed class InstrumentationWithActivitySource : IDisposable
count++; count++;
activity?.AddEvent(new ActivityEvent("PostAsync:Started")); activity?.AddEvent(new ActivityEvent("PostAsync:Started"));
using var response = await client.PostAsync(new Uri(url, UriKind.Absolute), content, cancellationToken).ConfigureAwait(false); using var response = await client.PostAsync(url, content, cancellationToken).ConfigureAwait(false);
activity?.AddEvent(new ActivityEvent("PostAsync:Ended")); activity?.AddEvent(new ActivityEvent("PostAsync:Ended"));
activity?.SetTag("http.status_code", (int)response.StatusCode); activity?.SetTag("http.status_code", (int)response.StatusCode);

Some files were not shown because too many files have changed in this diff Show More